Подтвердить что ты не робот

Как перезагрузить страницу после завершения всех вызовов 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 завершены, чтобы я мог перезагрузить страницу. Любые предложения?

4b9b3361

Ответ 1

В своем вызове getInformation() вы можете вызвать location.reload() в success, например:

success: function(json) {
  if(!json.error) location.reload(true);
}

Чтобы дождаться завершения каких-либо дальнейших вызовов ajax, вы можете использовать ajaxStop событие, например:

success: function(json) {
  if(json.error) return;
  //fire off other ajax calls
  $(document).ajaxStop(function() { location.reload(true); });
}

Ответ 2

Вы можете просто перенаправить на ту же страницу в файле server.php, где функция определена с помощью заголовка ('Location: html-page');