ЕСЛИ НЕ ЗАВИСИМОСТИ ОТ КОНКРЕТНЫХ ОТВЕТОВ ОТ КАЖДОГО ЗАПРОС
JQuery имеет функцию .when()
и .done()
, что в вашем случае, будет выполнять все запросы AJAX первыми, и, когда все запросы будут завершены, вы можете сделать что-то со всеми данными ответа за один раз, поэтому пользователь не видит ступенчатого преобразования, поскольку различные запросы AJAX завершаются на разных этапах.
$.when(ajax1(), ajax2(), ajax3(), ajax4()).done(function(a1, a2, a3, a4){
// the code here will be executed when all four AJAX requests complete
// a1, a2, a3 and a4 contain lists of 3 items; the response text [0],
// the status [1], and an jqXHR object [2] for each of the listed AJAX calls
$('#element1').html(a1[0]);
$('#element2').html(a2[0]);
$('#element3').html(a3[0]);
$('#element4').html(a4[0]);
});
function ajax1() {
return $.ajax({
url: "someUrl.php",
dataType: "html",
data: myData,
...
});
}
function ajax2() {} // same as above
function ajax3() {} // same as above
function ajax4() {} // same as above
Для получения дополнительной информации об использовании .when()
, и чтобы узнать, как обрабатывать ошибки AJAX вызовов, проверьте jQuery documentation.
ЕСЛИ ВЫ ЗАВИСИМОСТИ ОТ КОНКРЕТНЫХ ОТВЕТОВ КАЖДОГО ЗАКАЗА
Вы можете хранить каждый ответ и идентификатор элемента в массив и работать с ними на одном дыхания позже, когда все вызовы AJAX являются полными. Нечто подобное могло бы помочь (с использованием кода из приведенных выше):
var myAjaxResponses = [];
$.ajax(
//...
function() {
if(x) {
myAjaxResponses.push({
'elementID': "element1",
'responseData': x,
});
} else {
$.ajax(
function() {
if (x) {
myAjaxResponses.push({
'elementID': "element2",
'responseData': x,
});
}
}
)
}
}
)
// loop through myAjaxResponses
// adding the response data to each respective element
function processResponses() { // called when last AJAX request finishes
$.each(myAjaxResponses, function (index, value) {
$('#'+value.elementID).html(value.responseData);
});
}
Вот JSFIDDLE, чтобы показать идею массива работать.
Я удалил теги [jQuery Animate] и [jQuery Отложенные] из вашего вопроса, поскольку я думаю, что они неактуальны. Кроме того, заголовок становится более читаемым и доступным для поиска. – TheCarver