【问题标题】:in AJAX (XMLHttpRequest) is it better to use eventListener or readyStateChange?在 AJAX (XMLHttpRequest) 中使用 eventListener 还是 readyStateChange 更好?
【发布时间】:2012-11-13 17:59:28
【问题描述】:

我正在重新观看 WWDC12 上关于 HTML5 高级效果的视频,并注意到他们在演示中使用了 req.addEventListener("load",callback,true) 而不是通常的 onreadystatechange

加载事件和state=4 status=200情况有什么区别?
是触发相同的加载事件还是两个不同的事件?

【问题讨论】:

  • 相关:stackoverflow.com/questions/6783053/…。根据这个答案,我的猜测是loadreadyState==4 时触发。 load 事件仅表示 network 成功(即找到服务器),而不是 HTTP 成功(例如,可能返回 HTTP 错误代码)。但是,我找不到详细说明如何以及何时为 Ajax 请求触发 load 的规范。

标签: javascript ajax html


【解决方案1】:

load 事件仅表示请求是 network 成功,不一定是 HTTP 成功。 Ajax 请求总是触发load 事件或error 事件,指示网络事务的成功或失败(作为Progress Events 规范的一部分):

  • error 事件在由于服务器关闭或位于不可访问的域(即请求被同源策略阻止)而导致网络获取失败时触发。

  • 否则,无论返回的 HTTP 代码如何,load 都会触发。

loaderror 事件总是在最后一个 readstatechange 事件触发之后触发,因此您可以确定 loaderror 回调与 xhr.readyState == 4 和 @987654333 一起运行@ 设置为正确的 HTTP 响应代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    相关资源
    最近更新 更多