我有一个jQuery File Upload ajax函数,如下所示:
$('#uploadFile').fileupload({
replaceFileInput: false,
singleFileUploads: true,
autoUpload: false,
add: function (e, data) {
$.each(data.files, function (index, file) {
data.url = 'my_url';
data.type = 'POST';
data.submit();
});
},
done: function (e, data) {
alert("Done");
}
});
目前,如果我上传了3个文件,我就会收到3'完成'警报,因为为每个文件调用done函数。有没有办法可以改变这种行为,这样只要上传了多少文件就完成了一次完成功能 - 所以如果我上传了2个文件,我只想看看'完成'警告一次,如果我上传了10个文件,我仍然只想看到“完成”。警报一次。
答案 0 :(得分:0)
请查看here。
顺便说一句,您可以玩以下内容: 在服务器端,如果上传了所有文件,您可以发回特殊结果。例如,在完成后,您可以检查此值。
答案 1 :(得分:0)
你可以使用falg:
var IsDone=0;
$('#uploadFile').fileupload({
replaceFileInput: false,
singleFileUploads: true,
autoUpload: false,
add: function (e, data) {
$.each(data.files, function (index, file) {
data.url = 'my_url';
data.type = 'POST';
data.submit();
});
},
done: function (e, data) {
if(IsDone==0){
alert("Done");
IsDone=1;
}
}
});
答案 2 :(得分:0)
这部分对我有用:
var addedFiles = 0;
var uploadedFiles = 0;
$('#uploadFile').fileupload({
replaceFileInput: false,
singleFileUploads: true,
autoUpload: false,
add: function (e, data) {
$.each(data.files, function (index, file) {
data.url = 'my_url';
data.type = 'POST';
data.submit();
addedFiles += 1;
});
},
done: function (e, data) {
uploadedFiles += 1;
if (addedFiles === uploadedFiles) {
alert("Done");
addedFiles = 0;
uploadedFiles = 0;
}
}
});
答案 3 :(得分:0)
如果您愿意将singleFileUploads
更改为false
,那么您可以执行以下操作:
$('#uploadFile').fileupload({
replaceFileInput: false,
url: 'my_url',
type: 'POST',
done: function(e, data) {
alert('Done');
}
});
否则,我能想出的最好的黑客是:
$('#uploadFile').fileupload({
replaceFileInput: false,
url: 'my_url',
type: 'POST',
add: function(e, data) {
var $this = $(this),
jqXHRs = $(this).data('jqXHRs');
// Check if 'add` was called for the first file.
if (data.files[0] == data.originalFiles[0]) {
jqXHRs = [];
$this.data('jqXHRs', jqXHRs);
}
jqXHRs.push(data.submit());
// Check if 'add` was called for the last file.
if (data.files[0] == data.originalFiles[data.originalFiles.length-1]) {
$.when.apply($, jqXHRs).done(function() {
alert('done');
});
$this.removeData('jqXHRs', jqXHRs);
}
}
});
注意:
singleFileUploads
选项默认为true
。autoUpload
选项默认为true
。autoUpload
功能时,我不认为add
选项的价值很重要。singleFileUploads
为true
时,会为每个要添加的文件调用add函数。contains the original file list, in the order they will be passed to the
add` function。