Javascript 发送同步XMLHttpRequest时jQuery不工作

Javascript 发送同步XMLHttpRequest时jQuery不工作,javascript,jquery,Javascript,Jquery,我有一个将字符串发送到chuncks的代码。 一切正常,希望脚本发布到服务器时,状态不会更新。 请求是同步而非异步的,因为我希望一次发布一个块,而不是一次发布所有内容 for (var packet in packets) { var calculated = ((packet/(packets_lenght-1))*100); $('#status').text(calculated); var formData = new FormData();

我有一个将字符串发送到chuncks的代码。 一切正常,希望脚本发布到服务器时,状态不会更新。 请求是同步而非异步的,因为我希望一次发布一个块,而不是一次发布所有内容

for (var packet in packets) {
     var calculated = ((packet/(packets_lenght-1))*100);
     $('#status').text(calculated);

     var formData = new FormData();

     formData.append("packet", packets[packet]);
     formData.append("packet_num", packet);
     formData.append("name", 'name');

     var request = new XMLHttpRequest();
     request.open("POST", "index.php", false);
     request.send(formData);

}
有人能告诉我我做错了什么吗?
谢谢。

这是因为浏览器在忙着执行代码时没有刷新视图状态(js在单一威胁中执行-因此在同步请求的情况下-ints正常)

您应该像这样在数组上异步迭代

抱歉-z做了一些小改动只是为了展示想法,您可以根据主要想法重构代码

var packets = str2chunk(JSON.stringify(frames_array).split('data:image/jpeg;base64,').join(''), 10);
var packets_lenght = packets.length;

function processPacket(packet){
    if(packet >= packets_lenght){
      return;   
    }
    $.ajax({
        type: "POST",
        url: "http://fiddle.jshell.net/echo/jsonp/",
        data: {
            packet: packets[packet],
            packet_num: packet,
            name: 'name'
        },
        success: function (answer) {
            console.log(packet);
            var calculated = ((packet / (packets_lenght - 1)) * 100);
            $('#status').text(calculated + '%');
            processPacket(packet+1);
        },
        error: function () {

        }
    });
}

processPacket(0);

在这种情况下使用$.ajax()(或$.post())当将$.ajax与async:false一起使用时,它具有相同的行为。什么类型的数据包和数据包变量?我有一个被拆分为块的字符串。这些块是数据包。packet是块的编号。我只想让post请求一个接一个,而不是同时发送所有请求。你能在jsbin上举个例子吗?另外,您不应该使用for…in-loop with数组,请使用for()非常感谢!有趣的逻辑。