我的页面有两个主要查询 - 项目和类似项目。
该项目正常获取,但类似的项目作为单独的jQuery ajax调用加载,该调用会在页面加载时自动触发。然后将类似的项目附加到页面。第二个查询是分开的,因为它偶尔会很慢并影响用户体验。
$.post(url, function(output) {
if (output) {
var data = $.parseJSON(output);
if (data.success) {
$("div").html(data.html);
}
}
});
我现在注意到,即使在尝试离开时,ajax查询也会阻止页面。浏览器不允许用户离开页面,直到ajax查询返回某些内容 - 相似的项目或没有结果。
我之前没有处理过这种情况。有没有办法以一种不会迫使用户等待它完成的方式构建这个JQuery ajax调用?目前无法解决服务器端响应的速度问题。
UPDATE /解答:
以下作为答案发表。
答案 0 :(得分:1)
您描述的行为似乎是“请求处于活动状态时浏览器被锁定”。
你可能有类似下面的代码:
$.ajaxSetup({
async: false
// And other parameters...
})
请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。
所以...恢复它的唯一方法是找到代码块并更改它...... OR 再次重新定义async
参数,就在{{{}之前1}}执行:
$.post()
答案 1 :(得分:0)
我最终在这里找到了答案:
Asynchronous ajax request locking browser
服务器上的PHP正在锁定会话,并且可以使用ajax调用的服务器端代码中的php session_write_close()
来解锁。虽然ajax调用没有返回任何内容,但是单击链接需要下一页的会话,该页面仍然处理ajax调用。