2013-10-23 43 views
1

我正在使用Ajax表單插件,並且我有一個用於發送多個請求的循環。 我試圖讓每個文件的個別進度。似乎有效,但文件的進度只顯示在代碼的最後<p>多進程狀態+ Ajax表單插件

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); 
} 
}); 
} 

HTML輸出爲2個文件:

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

有兩大100%,似乎它獲取這兩個文件的進度。但是,它只是在最後一個元素中打印。 謝謝

回答

1

因爲類別更改爲c1之前從c0的響應進來... 把它放到一個匿名函數。

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請求同步

+0

就像一個魅力。感謝您的解釋! –