谢谢阅读.
我注意到如果我有一个打开了一个或多个ajax请求的页面,并且我单击一个链接离开页面或刷新它,它将等待ajax请求在卸载之前完成.
这通常不是问题,但如果请求需要一段时间,它可以.
我正在寻找类似的东西:
$(window).bind("beforeunload", function() {AjaxRequest.abort();});
Run Code Online (Sandbox Code Playgroud)
在卸载之前自动中止请求,但不太确定如何查找ajax请求.他们会在某个窗口下吗?
Luc*_*eis 10
在$阿贾克斯() jQuery的方法返回XMLHttpRequest对象.这意味着您可以在对象上应用标准方法,例如abort().
卸载使用内置的卸载 jQuery事件方法.
var myajax = $.ajax(...);
$(window).unload( function () { myajax.abort(); } );
Run Code Online (Sandbox Code Playgroud)
以下代码经过测试并在Chrome中卸载页面卸载时所有未完成的jQuery ajax请求,但Edge和IE使用客户端也没有错误地使用它.
将以下内容作为第一个jQuery ready处理程序:
$(onPageLoaded)
Run Code Online (Sandbox Code Playgroud)
把它放在可以访问的地方:
function onPageLoaded() {
var jqxhrs = [];
$(window).bind("beforeunload", function (event) {
$.each(jqxhrs, function (idx, jqxhr) {
if (jqxhr)
jqxhr.abort();
});
});
function registerJqxhr(event, jqxhr, settings) {
jqxhrs.push(jqxhr);
}
function unregisterJqxhr(event, jqxhr, settings) {
var idx = $.inArray(jqxhr, jqxhrs);
jqxhrs.splice(idx, 1);
}
$(document).ajaxSend(registerJqxhr);
$(document).ajaxComplete(unregisterJqxhr);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14794 次 |
| 最近记录: |