Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php页面加载延迟,直到当前页面上的所有ajax调用完成_Php_Jquery_Ajax - Fatal编程技术网

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',

我有一个PHP页面(index.PHP),它正在对另一个PHP页面进行一些ajax调用
(例如: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调用添加到一个数组中?