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

时间:2010-10-26 01:49:33

标签: javascript jquery

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

3 个答案:

答案 0 :(得分:33)

getInformation()来电中,您可以在location.reload()回调中致电success,如下所示:

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

要等到任何进一步的 ajax调用完成,您可以使用ajaxStop event,如下所示:

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

答案 1 :(得分:0)

您可以直接重定向到server.php文件中使用标题定义功能的同一页面('位置:html-page');

答案 2 :(得分:-1)