Javascript 在所有ajax调用完成后,如何重新加载页面?

Javascript 在所有ajax调用完成后,如何重新加载页面?,javascript,jquery,Javascript,Jquery,当用户第一次访问我的网站时,我使用几个ajax调用从各种来源获取大量信息。ajax调用完成后,如何重新加载页面 if(userVisit != 1) { // First time visitor populateData(); } function populateData() { $.ajax({ url: "server.php", data: "action=prepare&myid=" + id,

当用户第一次访问我的网站时,我使用几个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调用何时完成,以便重新加载页面。有什么建议吗?

在您的
getInformation()调用中,您可以在回调中调用,如下所示:

success: function(json) {
  if(!json.error) location.reload(true);
}
success: function(json) {
  if(json.error) return;
  //fire off other ajax calls
  $(document).ajaxStop(function() { location.reload(true); });
}
要等待任何其他ajax调用完成,可以使用,如下所示:

success: function(json) {
  if(!json.error) location.reload(true);
}
success: function(json) {
  if(json.error) return;
  //fire off other ajax calls
  $(document).ajaxStop(function() { location.reload(true); });
}
  • 更多信息,请访问:

您可以重定向到server.php文件中的同一页面,在该页面中,函数是使用标题(“位置:html页面”)定义的

谢谢。但是如果在
getInformation
函数中的
success
回调中对我的服务器的一些ajax调用仍然挂起,该怎么办?这难道不只是刷新页面而不考虑这一点吗?还是我遗漏了什么?@Legend-是的,如果你想延迟到它们全部完成,只需执行
$(document).ajaxStop(函数(){location.reload(true);})
并在所有请求完成时执行。这完全有道理,但由于某种原因,当我插入此调用时,页面会一直刷新。@图例-即使在加载用户数据后,您是否仍在运行这些函数?如果是这样的话,它会继续像那样重新加载。你是对的。我修好了。谢谢。工作完美。。。不过有一件事。。。它在Chrome中工作,但在Firefox中,它会像以前一样重新启动…我可以看到你的意思,但你应该尝试重申你的链接所展示的内容。我猜您的意思是document.location.reload(true)在包含POST数据的页面上无法正常工作?