加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ajax:如何防止jQuery在执行xmlHttpRequest.abort()之后调用succ

发布时间:2020-12-16 03:08:40 所属栏目:百科 来源:网络整理
导读:使用jQuery的$.ajax()函数.如果请求被故意中止,或者如果服务器关闭(没有响应),则会出现相同的结果; 也就是说,在xmlHttpRequest.status = 0和xmlHttpRequest.readyState = 4的情况下触发“成功”处理程序. (我通过关闭IIS模拟失败的请求,然后针对已经“关闭”
使用jQuery的$.ajax()函数.如果请求被故意中止,或者如果服务器关闭(没有响应),则会出现相同的结果;

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

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

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

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

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

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

// ...

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

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

这就像一个魅力.

jQuery> = 1.5:

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

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

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

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

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

// ...

jxhr.abort();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读