Javascript 在所有ajax调用完成后,如何重新加载页面?
当用户第一次访问我的网站时,我使用几个ajax调用从各种来源获取大量信息。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,
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数据的页面上无法正常工作?