2012-07-23 70 views
2

基本上我使用jqXHR和asmx。如果可能,我想這樣做;中止所有的Ajax調用 - jqXHR

在everypage im中使用6-7 ajax調用同步或異步取決於它是哪種方法。但是當他們中的一個出錯時,我想打破這個ajax調用,並在所有的ajax調用之後。

已經謝謝了!

回答

6

使用一個數組,用於存儲每個ajax調用返回的對象,並遍歷該數組以中止它們全部:

var XHR = [] 
........//later 
var myajax = $.ajax({ 
    type: 'GET', 
    url: url 
}).done(function() { 
    //do something 
}).fail(function() { 
    abortAll(); 
}); 
XHR.push(myajax); 

function abortAll() { 
    XHR.each(function(i,e) { 
     e.abort(); 
    }); 
} 
+0

我得到了11個ajax調用,這在第8次調用時效果很好,但是我在第9次出錯,想要取消其他2次調用,那多數民衆贊成在任何想法? :) – burakakkor 2012-07-23 10:09:54

+0

也檢查到數組的長度,當我得到錯誤在9日是8和其他2個調用工作異步。他們在第九名完成或出錯時觸發。 – burakakkor 2012-07-23 10:10:45

+0

[鏈接](http://img198.imageshack.us/img198/920/ajaxsy.jpg)這是我所有的ajax調用,你可以看到我得到了錯誤,這就是我想要的,但其他2只是當第8次完成或得到錯誤時觸發:( – burakakkor 2012-07-23 10:14:51

3

每次你創建它返回一個對象,一個Ajax請求,你可以用它來中止請求:

var request = $.ajax({ 
    type: 'POST', 
    url: url, 
    success: function(data){} 
}); 

,然後使用請求中止呼叫:

request.abort(); 
+0

也可以使用然後'.push()'請求進入它,並用'for'循環或'$ .each'中止所有的'var request = []''。 – 2012-07-23 08:56:06