1

我正在使用 Ajax 表单插件,并且我有一个用于发送多个请求的循环。我正在尝试获取每个文件的单独进度。似乎可行,但文件的进度仅显示在<p>代码的最后。

for (var i = 0; i < inp.files.length; i++) {
$('form').ajaxSubmit({
beforeSend: function() {
    $('body').append('<p class="c'+ i +'"></p>'); 
    var classe = '.c' + i;
},
uploadProgress: function(event, position, total, percentComplete) {
    var percentVal = percentComplete + '%';

    $(classe).append(percentVal);
    //console.log(percentVal, position, total);
}
});
}

2 个文件的 HTML 输出:

<p class="c0"/>
<p class="c1">
79%
100%
81%
100%
</p>

有两个100%似乎它得到了两个文件的进度。但是,它只是在最后一个元素中打印。谢谢

4

1 回答 1

1

因为在来自 c0 的响应进来之前 classe 更改为 c1... 将其放入匿名函数中。

for (var i = 0; i < inp.files.length; i++) {
    (function () {
        var classe = '.c' + i;
        $('form').ajaxSubmit({
            beforeSend: function () {
                $('body').append('<p class="c' + i + '"></p>');
            },
            uploadProgress: function (event, position, total, percentComplete) {
                var percentVal = percentComplete + '%';

                $(classe).append(percentVal);
                //console.log(percentVal, position, total);
            }
        });
    }());
}

(未测试)

或者您必须更改 Ajax 请求才能同步

于 2013-10-23T12:12:46.443 回答