javascript - 浏览器等待 ajax 调用完成,即使在调用 abort 之后(jQuery)

标签 javascript jquery xmlhttprequest onbeforeunload abort

我有一些(可能)长时间运行的 ajax 调用,如果用户导航到另一个页面,我想中止这些调用。以下 jQuery 代码在离开页面时对所有挂起的 XMLHttpRequest 对象调用中止:

$.ajaxSetup({
    beforeSend: function(xhr) {
        $(window).bind('beforeunload', function() {
            xhr.abort();
        });
    }
});

在测试用例中,我强制等待 10 秒以等待被调用的服务器端操作。使用 Firebug,我确认当我单击页面上的任何链接时,上面的代码确实会导致所有挂起的 ajax 调用立即停止。但是,浏览器仍会等待整整 10 秒,然后才能转到下一页。 IE 似乎表现出相同的行为。这是已知的浏览器行为吗?在这种情况下,我能做些什么来让用户立即离开该页面吗?提前致谢。

最佳答案

感谢您的回复!事实证明,我完全错误地认为这是浏览器问题——问题出在服务器上。 ASP.NET 序列化需要 session 状态的同一 session 的请求,因此在这种情况下,在这些 ajax 发起的请求完成之前,下一页不会在服务器上开始处理。

不幸的是,在这种情况下,响应 ajax 调用的 http 处理程序中需要 session 状态。但是只读访问就足够了,所以通过用 IReadOnlySessionState 而不是 IRequiresSessionState 标记处理程序, session 锁不会被持有,问题就解决了。

希望这些信息对其他人有用。

关于javascript - 浏览器等待 ajax 调用完成,即使在调用 abort 之后(jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/941889/

相关文章:

javascript - 如何使用存储在数组中的图像路径迭代更改 div 背景图像?

javascript - CSS 过渡与 JavaScript

Javascript 日期字符串转换

jquery - 有没有办法动画显示:none?

javascript - XMLHttpRequest 无法加载 http ://localhost:8089/jquery. Access-Control-Allow-Origin 不允许 Origin null

javascript - 在 v-for 循环中显示特定数据的问题

javascript - 同时选择大字体和低视力 css 样式表

javascript - 使用 Jquery.ajax().then() 时无法 .catch() 错误

javascript - 如何在用户脚本中处理多个 AJAX 结果?

php - 将 PUT 和 POST 和 DELETE 组合在一起的形式