如何判断XMLHttpRequest是否因网络问题而失败?

10
在Web编程中(JavaScript、Dart等),如何判断我的XMLHttpRequest(也称为AJAX)请求因网络错误而失败?
我将网络错误定义为DNS、TCP、连接问题等任何问题。
谢谢!

请查看 - https://dev59.com/9HI-5IYBdhLWcg3wq6do - Ankit
超时并不总是有效的。我在本地测试时关闭了我的服务器,XHR请求立即失败。在某些情况下,超时可能作为一个指标起作用。 - Seth Ladd
3个回答

8
在Dartium和至少在Chrome JS中,你可以通过检测readyState == 4(“完成”)且状态为零来检测故障。零不是有效的服务器响应,所有HTTP服务器响应都在100以上,这意味着它实际上没有到达服务器(或者至少服务器没有说出正确的HTTP)。
在这一点上,onError流也会得到一个进度事件。
在同步模式下,将抛出错误。

-1
通常,AJAX调用的响应会带有状态码和responseText属性。如果您可以访问来自调用的数据,请尝试读取data.status和data.responseText,并查看是否正确获取它们(200表示成功,500表示内部服务器错误等)。

2
那么,表示请求由于某些网络问题未能到达服务器的status和responseText的值是什么? - Seth Ladd

-2

你需要检查响应中返回的响应代码,如果该代码返回500,则表示存在服务器问题。


5
500状态码也意味着服务器出现了错误(例如,错误的数据库驱动程序导致异常)。因此,我不能仅仅依赖500状态码来表示网络问题。 - Seth Ladd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接