在AJAX(XMLHttpRequest)中使用eventListener或readyStateChange会更好吗?

时间:2012-11-13 17:59:28

标签: javascript ajax html5

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

加载事件和state=4 status=200情况之间有什么区别?
它是被激活的负载事件还是两个不同的负载事件?

1 个答案:

答案 0 :(得分:0)

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

  • 当网络提取由于服务器关闭或无法访问的域而失败时,error事件将触发(即,请求被同源策略阻止)。

    < / LI>
  • 否则,无论返回的HTTP代码是什么,load都会触发。

loaderror事件始终在最后一次readstatechange事件触发后触发,因此您可以确定loaderror回调正在运行,xhr.readyState == 4xhr.status设置为正确的HTTP响应代码。