Мне нужно дождаться выполнения определенного запроса ajax перед тем, как продолжить. Поскольку этот запрос запускается с разных анкеров, я завернул его в функцию. Что происходит после завершения функции с первым аяксом, это второй запрос ajax.
Сначала я попытался дождаться, когда первый закончит использование $.ajaxComplete()
которое столкнулось с бесконечным циклом из-за второго запроса ajax, выполненного после этого.
Я нашел несколько примеров об использовании $.when
но ни один из них не показал, можно ли использовать метод вместо отложенных.
Вот что я хотел бы сделать:
$.when( functionFirstAjaxCall(data) ).then( function() {
// after first ajax request has finished, do the following:
$.ajax({
//...
});
});
У functionFirstAjaxCall()
должно быть определенное возвращаемое значение или как я могу заставить это работать? Кстати, решение не нужно использовать $.when
.
Обновление: я получил его работу, создав пользовательское событие, как сообщил Vandesh.
function first() {
$.ajax({
// ...
success: function (d) {
$.event.trigger({
type: "finished",
data: d
});
}
});
}
$(document).on('finished', second());
Во всяком случае, было бы простое решение, используя $.when
?
Да мы можем! Дозировать что-то подобное этой работе для вас?
function first() {
var a = $.ajax({
// ...
});
return a.promise();
}
first().done(function(){
//Im done
});
Вы можете сделать что-то вроде:
$.ajax({// First AJAX call
url: ""
}).done(function() {
$.ajax({//Second AJAX call on completion of first
url: ""
}).done(function() {
});
});
Подробнее об использовании $.ajax()
functionFirstAjaxCall().done(function(){ ... });
могу я?
success:function(){...}
илиdone:
из первого AJAX?success
считается устаревшим - api.jquery.com/jQuery.ajax