小编典典

XMLHttpRequest的onerror处理程序何时应触发

ajax

我在理解XMLHttpRequest的处理程序时遇到了一些问题。规范说明了有关onerror处理程序的信息

error [Dispatched …]请求失败时。

load [Dispatched …]请求成功完成时。

问题是,“请求失败”是什么意思。那可能是

  • 根本无法发出请求(例如,连接被拒绝以及此类错误),或者
  • 上面加上服务器返回的错误代码(例如404)

另外,我想知道这是否意味着onerror并且onload永远不应同时触发。

该参考指示onerror处理程序应取决于执行status代码,并onload根据readyState。这表明它们并不相互排斥,但是,我认为这不是权威信息。

我问是因为使用最新的Opera快照,我发现onload即使在404状态代码上也被触发。我知道测试status是肯定的选择,但是我想知道这是我必须按照规范执行的操作,还是只是Opera中错误的解决方法。


阅读 2663

收藏
2020-07-26

共1个答案

小编典典

如评论中所述,onerror网络级别
出现故障时触发。如果错误仅在应用程序级别存在,例如,发送了HTTP错误代码,则onload仍然会触发。您需要在onreadystatechange处理程序中显式测试返回的状态代码。

请注意,被拒绝的跨域请求也会触发onerror处理程序。

2020-07-26