停止浏览器请求

时间:2013-01-04 18:39:09

标签: javascript ajax

当点击刷新按钮时,是否可以停止页面上发生的所有请求/脚本?
我有一个$ .ajax请求需要几分钟。我试图在unload事件中执行window.stop();我试过xhr = $ .ajax(...);和xhr.abort();通过互联网找到的任何其他方法,没有任何作用。

这甚至可能吗?为什么浏览器仍然等待该请求完成并发回响应而不刷新页面?


LATER EDIT(求助):似乎等待问题实际上来自服务器。如果在ajax调用中,脚本使用 SESSION ,则网页将冻结,直到请求完成,即使我们中止xhr也是如此。

这是为什么?说明:

会话数据通常在脚本终止后存储而不需要调用session_write_close(),但是由于会话数据被锁定以防止并发写入,因此任何时候只有一个脚本可以在会话上运行。将框架集与会话一起使用时,由于此锁定,您将体验到逐个加载的框架。只要对会话变量进行了所有更改,就可以通过结束会话来减少加载所有帧所需的时间。

1 个答案:

答案 0 :(得分:5)

也许在here之前尝试在刷新前取消?

window.onbeforeunload = function(event) {
    xhr.abort();
};