операций по прекращению Привет, ребята,AJAX продолжить/резюме после
я хотел бы спросить, есть ли возможность продолжить прерванную Аякса. Я получил arraz Аякса звонков в 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);
})
);
Есть как больше 20 Ajax (ов) в массиве defferreds. Когда пользователь нажимает кнопку abort_ajax, он должен прервать все аяксы, которые еще не выполнены. Я использую эту функцию для этого:
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, он должен вызывать оставшиеся ajaxes из массива defferreds и завершить их. Проблема в том, что я не знаю, как начать прерванный аякс, даже если я его сохранил в моем массиве дефферва. Можно ли возобновить прерванные аяксы? И только те, которые были прерваны, а не те, которые успешно завершились?
EDIT: Im с просьбой, если есть возможность повторно только не завершенные ajaxes. Я попробовал решение, которое используется в here, но это не решает мою конкретную проблему. После того, как я нажимаю на resume_ajax кнопку ничего не происходит, даже если я использовал этот код:
$('.resume_ajax').click(function(){
for (var key in defferreds){
$soap.ajax(defferreds[key]);
}
});
Какова точная строка кода, которая вызывает прервынные ajaxes снова? Может ли это быть достигнуто при вызове ajax, похожим на один в моем массиве defferreds? Потому что, как я уже сказал, ничего не произошло.
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