有没有办法判断最后一次ajax调用是否完成?

时间:2011-11-18 05:11:38

标签: jquery-ui jquery jquery-plugins file-upload

我正在研究这个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) {

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

2 个答案:

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