返回列表

Chrome 下 XHR 的 readyState 4 而 status 0

默认分类 2014/03/09 22:31

2012年重写XHR模块时遇到过Chrome 下 XHR 的 readyState 4 而 status 0 的问题, 由于当时发现了 另外一个坑 XHR发送完不能在其onreadystatechange事件中直接复用该对象发送新的请求 当时使用了setTimeout来断开作用域链,从而解决 readyState 到 3 就停住的问题。

上周五在使用XHR发送消息时又遇到了下面的错误

XHR Error: Cross domain, cannot access: /message/get_msg?max=6&type=user&to_id=52dcdf25019459d124c25a2d. 
>> VM185 requester.js:334
GET http://115.28.49.101:3000/message/get_msg?max=6&type=user&to_id=52dcdf25019459d124c25a2d 
>> net::ERR_CONNECTION_REFUSED 

debug发现请求处理结束之后 XHR对象 的 readyState 一直是4,status 是 0 , 调用abort()之后XHR 的 readyState 才恢复为 0, 猜测之前使用定时器设定XHR对象处理结束500毫秒之后再调用该XHR对象可以成功返回,而设为1毫秒却会出错的现象应该与垃圾回收 有关。

希望上述猜测能给遇到同样问题的同学一点帮助。