mat*_*t b 9 ajax jquery xmlhttprequest
我们的Web应用程序中的一个页面使用jQuery的ajax()方法大约每10秒轮询一次服务器以获取新数据.我们通常有几百名用户同时查看此页面,因此我们的服务器每秒会收到多个请求.负载不是任何问题.
对于我们访问者中的一小部分,jQuery ajax()调用会偶尔触发它的错误事件.大多数这些错误事件都是明显的错误(例如访问者遇到网络问题时超时),但是这些错误中的一小部分我很难找到原因,而且我有点困惑.
我们正在连接一个像这样的全局错误监听器
$.ajaxSetup({
timeout: oursettings.timeout,
error: function(xhr, status, e){
// error handling goes here
}
});
Run Code Online (Sandbox Code Playgroud)
对于这个特定的错误子集,jQuery给我们带来了status一些"error".通过jQuery源代码(特别是第3574行)读取错误仅在XmlHttpRequest readystate具有值4(意味着它DONE)并且HTTP响应状态超出成功值(< 200或>= 300)时使用此值抛出.
但是,当我们检查XmlHttpRequest对象本身时,我们发现它的(HTTP响应)状态为0.根据XHR规范,当"错误标志为真"时,应设置状态0 .
这是我真的很困惑的地方,因为XmlHttpRequest规范中关于"错误标志" 的唯一其他事情是
DONE状态具有相关的错误标志,指示某种类型的网络错误或堕胎.它可以是true或false,初始值为false.
规范没有说明保留这个错误标志的属性或位置(即,它是否可用xhr.error?).
所以我想我的问题归结为:这将是正确的我们的Ajax的错误处理代码假设击中我们的错误处理程序与jQuery的状态的任何事件"error"和xhr.status的0,以引起仅通过"网络错误或流产"?
是否有任何其他条件或任何其他人看到的可能导致XmlHttpRequest readystate DONE (4)的HTTP响应状态为0?我希望能够排除服务器端错误的任何可能性(因为我们的服务器端日志没有显示任何内容),并且要更改错误处理逻辑以不将此方案视为致命错误(这导致用户看到一堆大红色警报类型错误消息).
| 归档时间: |
|
| 查看次数: |
4357 次 |
| 最近记录: |