是否有一种方法可以告诉最后一个ajax调用是否已经完成



我有这个网站,我正在工作,我需要弄清楚当最后ajax调用完成…我正在使用这个jQuery插件,所有的工作都很棒,但问题是客户端一次上传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) {

但它在第一次运行后运行,而不是在两个文件上传后运行....任何关于如何我可以重定向到另一个页面后,两个文件上传....的想法提前感谢

简短的回答是在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";
 }
}

有更优雅的解决方案,但它们都涉及到递减计数器

您可以使用闭包来生成函数,该函数具有已上传文件的本地记录。

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

相关内容

最新更新