好傢伙後,AJAX繼續/恢復中止
我想問一下,如果有任何可能繼續中止阿賈克斯。我arraz Ajax調用的defferreds這樣的:
var defferreds = [];
defferreds.push(
$soap.ajax({
type: "POST",
dataType: "json",
url: "some_url.php",
cache: false,
}).done(function(data) {
/* do something */
}).fail(function(jqXHR,status, errorThrown) {
console.log(jqXHR.responseText);
})
);
有喜歡的defferreds陣列中的20多個AJAX(ES)。當用戶點擊abort_ajax按鈕時,它應該中止所有尚未完成的ajaxes。我使用這個功能來做到這一點:
function abort_ajaxes(){
for(var i = 0; i < defferreds.length; i++){
if(defferreds[i] && defferreds[i].readyState != 4){
defferreds[i].abort();
} else {
delete defferreds[i];
}
}
}
在這裏,我需要你的幫助。只要用戶點擊resume_ajax按鈕,它應該從defferreds數組中調用剩餘的ajaxes並完成它們。問題是,我沒有線索如何開始中止阿賈克斯,即使我已經存儲在我的數組dehuerred。 是否有可能恢復中止阿賈克斯?只有那些被墮胎的人而不是那些已經成功的人結束了?
編輯: 林,詢問是否有可能重新運行不僅沒有完成ajaxes。我嘗試了here中使用的解決方案,但它不能解決我的具體問題。一旦我對resume_ajax按鈕沒有點擊是即使我用這個代碼:
$('.resume_ajax').click(function(){
for (var key in defferreds){
$soap.ajax(defferreds[key]);
}
});
什麼是再次呼籲中止ajaxes的準確代碼行?它可以通過在我的defferreds數組中看起來像ajax的調用來實現嗎?正如我所說,沒有任何事情發生。
EDIT2:
我運行ajaxes這樣的:
function run_ajaxes(){
var defferreds = [];
/* there are around 20 same ajax calls just with another url */
defferreds.push(
$soap.ajax({
type: "POST",
dataType: "json",
url: "some_url.php",
cache: false,
}).done(function(data) {
/* do something */
}).fail(function(jqXHR,status, errorThrown) {
console.log(jqXHR.responseText);
})
);
}
$('.run_ajaxes').click(function(){
run_ajaxes();
});
的[繼續中止AJAX(jqXHR)請求]可能的複製(HTTP:/ /stackoverflow.com/questions/18837293/continue-an-aborted-ajax-jqxhr-request) –
我認爲你必須再次通過ajax選項並重新運行它。 – maheshiv
既然你有一個數組,你可以在你的數組中存儲每個ajax的狀態。所以你可以檢測到流產的並再次打電話給他們...... – EhsanT