我正在研究这个site我需要弄清楚最后一次ajax调用何时完成...我正在使用这个jQuery plugin并且一切都很好但是问题是客户端一次上传2个文件...我需要在最后一次ajax调用后重定向到另一个页面。如果你在上传文件时在firebug中查看它,它运行http://dev.posnation.com/test/j/example/upload.php
两次,我需要在第二次运行之后和之后重定向页面。在javascript或jQuery中有一种方法可以判断ajax调用是否是完成。
以下是实例化它的代码
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload();
并且jQuery.fileupload.js中有一个onDone函数
_onDone: function (result, textStatus, jqXHR, options) {
但它在第一次运行之后运行而不是在两个文件都被上传之后....任何关于如何在两个文件上传后重定向到另一个页面的想法....提前感谢
答案 0 :(得分:3)
简短的回答是减少onDone回调中的计数器。一种可能的实现方式是使用全局变量,如下所示:
var numberFilesToUpload = 2;
// code to upload file
onDone: function() {
// this is the upload plug-ins callback function
numberFilesToUpload--;
if (numberFileToUpload == 0) {
windows.location.href = "/uploading-finished";
}
}
有更优雅的解决方案,但它们都会涉及减少计数器。
答案 1 :(得分:3)
您可以使用closure来生成具有已上载文件的本地记录的功能。
var fileUploads = function (filesNum, callback) {
var numberFilesToUpload = filesNum;
// code to upload file
return function() {
// this is the upload plug-ins callback function
numberFilesToUpload--;
if (numberFileToUpload == 0) {
callback();
}
};
}(2, function () {
//what you want to do when files are all uploaded.
});
fileUploads将在上传2个文件后触发callback
功能。回调和文件限制在此行中指定
var fileUploads = function () {
//...
} (2, function () {});