В первый раз, когда пользователь посещает мой сайт, я собираю много информации из разных источников, используя пару аякс-вызовов. Как перезагрузить страницу после завершения вызовов ajax?Как перезагрузить страницу после завершения всех вызовов ajax?
if(userVisit != 1) {
// First time visitor
populateData();
}
function populateData() {
$.ajax({
url: "server.php",
data: "action=prepare&myid=" + id,
dataType: "json",
success: function(json) {
if(json.error) {
return;
}
_id = response[json].id;
getInformation(_id);
}
});
}
function getInformation(id) {
$.ajax({
url: "REMOTESERVICE",
data: "action=get&id=" + id,
dataType: "json",
success: function(json) {
if(json.error) {
return;
}
$.ajax({
url: "server.php",
data: "action=update&myid=" + id + '&data=' + json.data.toString(),
dataType: "json",
success: function(json) {
if(json.error) {
return;
}
}
});
}
});
}
Так что код делает это, он получает список предопределенных идентификаторов для нового пользователя (populateData
функции) и использует их, чтобы получить больше информации от службы (третьей стороны getInformation
функции). Эта функция getInformation
запрашивает сторонний сервер, и как только сервер возвращает некоторые данные, он отправляет эти данные на мой сервер через другой вызов ajax. Теперь мне нужен способ выяснить, когда все вызовы ajax завершены, чтобы я мог перезагрузить страницу. Какие-либо предложения?
Спасибо. Но что, если некоторые вызовы ajax на мой сервер внутри обратного вызова 'success' в функции' getInformation' все еще находятся на рассмотрении? Разве это не просто обновит страницу, не учитывая этого? Или я чего-то не хватает? – Legend
@Legend - Да, если вы хотите отложить до тех пор, пока все не закончите, просто сделайте '$ (document) .ajaxStop (function() {location.reload (true);});' и будет выполняться, когда все эти запросы завершены. –
Это имеет смысл, но по какой-то причине, когда я вставляю этот вызов, страница постоянно обновляется. – Legend