我正在使用Blueimp Jquery File Upload plugin上传文件。完成上传过程后,我想做一些事情。因此,如果我拖放4个文件(一次),我想在上传所有文件时调用一些代码。我怎么能这样做?
我尝试过使用done
,stop
,progressall
等许多回调,但似乎没有什么是我正在寻找的。我需要确保在运行代码之前调用了最后一个done
。
我最接近stop
,但有时似乎在done
之前运行。有什么想法吗?
答案 0 :(得分:1)
更新 - 我在评论中了解到,回调的触发时间与上传的文件数相同。所以正确的答案是使用回调“始终”并放置一个计数器。每次上传文件时,计数都会增加。
// Variables to put before the .fileUpload and to be init in "add"
var nbElementsToUpload = 0;
var nbElementsUploaded = 0;
.bind('fileuploadalways', function (e, data) {
nbElementsUploaded++;
if(nbElementsToUpload === nbElementsUploaded){
/* All elements uploaded */
}
})
你说的是“最后”完成了。你是什么意思?你是在上传4次还是4次调用?
您有一个插件的回调函数列表。 https://github.com/blueimp/jQuery-File-Upload/wiki/Options#callback-options
如果您想捕获成功上传请求,请使用“完成” https://github.com/blueimp/jQuery-File-Upload/wiki/Options#done
如果要在完成后捕获所有已完成的操作(包括错误和中止),请使用“始终”回调。 https://github.com/blueimp/jQuery-File-Upload/wiki/Options#always
我自己使用这个插件没有“完成”和“失败”的问题。例如:
}).on('fileuploaddone', function (e, data) { // code here }) .on('fileuploadfail', function (e, data) { // code here })
您可以添加console.log以正确查看发生的情况和顺序。
此致