php页面加载延迟,直到当前页面上的所有ajax调用完成
我有一个PHP页面(index.PHP),它正在对另一个PHP页面进行一些ajax调用php页面加载延迟,直到当前页面上的所有ajax调用完成,php,jquery,ajax,Php,Jquery,Ajax,我有一个PHP页面(index.PHP),它正在对另一个PHP页面进行一些ajax调用(例如:data1.PHP),用内容填充一些div。 当我单击另一个菜单项(companys.php)时,(companys.php)页面的加载会延迟,直到(index.php)页面上的所有ajax调用都完成 但我需要在单击其他页面时停止所有ajax调用,而不是等待。 如何修复此问题?创建ajax请求您可以使用变量来存储它: var request = $.ajax({ type: 'POST',
(例如:data1.PHP),用内容填充一些div。
当我单击另一个菜单项(companys.php)时,(companys.php)页面的加载会延迟,直到(index.php)页面上的所有ajax调用都完成 但我需要在单击其他页面时停止所有ajax调用,而不是等待。
如何修复此问题?
创建ajax请求您可以使用变量来存储它:
var request = $.ajax({
type: 'POST',
url: 'url',
success: function(result){}
});
然后,您可以在事件触发器onbeforeunload上中止请求:
request.abort();
您可以使用一个数组来跟踪所有挂起的ajax请求,并在必要时中止它们
var request = [];
request.push($.ajax(...))
var _abortAllRequests = function () {
$(request).each(function (i, xhr) { xhr.abort(); });
request = [];
}
$(window).on("beforeunload", function () {
_abortAllRequests();
});
您在AJAX调用上设置了
async:false
了吗?@rorymcrossan它们应该异步加载,因为在加载所有div之前需要加载页面这是正确的,这就是为什么我想知道您是否使用了async:false
我没有使用async:false
,在这种情况下,您很可能达到了服务器允许的最大连接限制。我建议遵循@jainamsah的答案,在页面卸载时对任何正在进行的请求调用abort()
。我怎么知道我点击了另一个php页面?钩住onbeforeuload
事件或特定a
元素的click
事件有多个ajax调用正在运行,如何停止它们?使用数组变量并中止它你的意思是我应该将每个ajax调用添加到一个数组中?