【发布时间】:2012-05-14 13:31:05
【问题描述】:
我在理解XMLHttpRequest 的处理程序时有点问题。 The specification says this about the onerror handler:
error[Dispatched ... ] 当请求失败时。
load[Dispatched ... ] 当请求成功完成时。
问题是,“请求失败”是什么意思。那可能是
- 根本无法发出请求(例如,连接被拒绝和此类错误),或者
- 以上加上服务器返回错误码(如404)
另外,我想知道这是否意味着 onerror 和 onload 不应该同时触发。
This reference 表示onerror 处理程序应根据status 代码执行,onload 取决于readyState。这表明它们并不相互排斥,但是,我认为这不是权威信息。
我问是因为使用最新的 Opera 快照,我发现 onload 即使在 404 状态码上也会被触发。我知道测试status 是肯定的选择,但我想知道这是我必须按照规范执行的操作,还是只是针对 Opera 中的错误的一种解决方法。
【问题讨论】:
-
我认为
has completed successfully表示您收到状态代码,无论是 200 OK 还是错误代码(例如 404)。即使状态代码是错误状态代码,Chrome 也会触发 onload。 -
onerror 和 onload 不会同时触发。它是一个或另一个。但是 onloadend 在这两种情况下都会触发,并且是该行中的最后一个事件。
标签: javascript ajax xmlhttprequest