Есть ли способ узнать, завершен ли последний вызов ajax? - PullRequest
1 голос
/ 18 ноября 2011

У меня есть сайт , над которым я работаю, мне нужно выяснить, когда завершится последний вызов 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) {

но он работает после первого запуска, а не после загрузки обоих файлов .... любые идеи о том, как я могу перенаправить на другую страницу после загрузки обоих файлов .... заранее спасибо

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Вы можете использовать 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 вызовет функцию callback после загрузки 2 файлов.Обратный вызов и ограничения файлов указаны в этой строке

var fileUploads = function () {
  //...
} (2, function () {});
3 голосов
/ 18 ноября 2011

короткий ответ - уменьшить счетчик в обратном вызове 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";
 }
}

Существуют более элегантные решения, но все они будут включать уменьшение счетчика.

...