Dyl*_*son 12 javascript ajax xmlhttprequest
如果尝试进行Ajax/XMLHttpRequest调用时发生某些网络类型错误,则XMLHttpRequest.status通常为"0".但肯定应该有一种方法可以告诉用户网络错误究竟是什么,例如DNS解析是否失败,或者连接是否被主动拒绝,甚至连接是否已经建立但是在发送任何有效的HTTP响应之前中止了?IE至少在JavaScript控制台中打印出一些额外的信息,例如
SCRIPT7002:XMLHttpRequest:网络错误0x2efd,由于错误00002efd无法完成操作.
但它不是很友好,我无法看到如何从javascript查询该信息转换成我可以向用户显示的内容.
我不介意是否必须以不同的方式为不同的浏览器实现,但我现在很难看到任何方式获取这些信息.
BTW至少我希望能够区分:
在任何情况下,返回有效的HTTP响应,但状态为200 OK,没关系 - 我可以得到一个明智的错误消息显示给用户.但对于其他任何事情,似乎没有办法区分各种可能的错误类型.在我的应用程序中,用户负责提供地址以发出Ajax请求,因此如果他们弄错了,我希望能够告诉他们请求失败的原因.
小智 1
您最好深入研究 XMLHttpRequest 实例的 onerror 事件
xhr.onerror = function(e) {
if(e matches stuation 1) {
console.log('no internet connectivity (e.g. wifi disconnected)');
} else {
//...other conditions
}
};
Run Code Online (Sandbox Code Playgroud)
可能很难判断发生的错误的确切类型,只需尝试检查 e.message 或其他内容。
请注意,状态码 != 200 不会触发 onerror 事件,而是触发 onload 事件。小心处理
归档时间: |
|
查看次数: |
1032 次 |
最近记录: |