Ajax:如何防止jQuery在执行xmlHttpRequest.abort()之后调用success事件;

前端之家收集整理的这篇文章主要介绍了Ajax:如何防止jQuery在执行xmlHttpRequest.abort()之后调用success事件;前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用jQuery的$.ajax()函数.如果请求被故意中止,或者如果服务器关闭(没有响应),则会出现相同的结果;

也就是说,在xmlHttpRequest.status = 0和xmlHttpRequest.readyState = 4的情况下触发“成功”处理程序.@H_404_2@

(我通过关闭IIS模拟失败的请求,然后针对已经“关闭”的网站执行xmlHttpRequest)@H_404_2@

所以我的问题是如何确定中止请求或由于服务器没有响应而导致真正失败的请求(因为服务器可能已关闭)之间的区别,因为两种情况似乎都给我相同的状态/ readyState?@H_404_2@

编辑
更准确地说,我想知道在ajax上调用.abort()函数后如何防止调用“success”处理程序.@H_404_2@

我已经重新措辞,以反映这一点.@H_404_2@

jQuery< 1.5 对于jQuery< 1.5我提出了以下解决方案:
var request = $.ajax( /* ... */ );

// ...

request.onreadystatechange = function () {};
request.abort();

所以,基本上我所做的是在调用abort()之前删除成功的回调处理程序.@H_404_2@

这就像一个魅力.@H_404_2@

jQuery> = 1.5:@H_404_2@

从jQuery 1.5开始,$.ajax(),$.get(),…函数返回jXHR对象(api documentation)而不是xmlHttpRequest对象.因此,您不能简单地覆盖xmlHttpRequest.onreadystatechange()处理程序.@H_404_2@

这就是说,jXHR.abort()负责不调用成功回调处理程序.因此,调用jXHR.abort()就足够了.@H_404_2@

您确实不需要更新以前的代码,因为将onreadystatechange设置为jXHR根本就没有效果.@H_404_2@

长话短说,从jQuery 1.5开始,这将做:@H_404_2@

var jxhr = $.ajax( /* ... */ );

// ...

jxhr.abort();
原文链接:https://www.f2er.com/ajax/160227.html

猜你在找的Ajax相关文章