我正在重新观看来自WWDC12的关于使用HTML5的高级效果的视频,并注意到演示时他们使用的是req.addEventListener("load",callback,true)
,而不是通常的onreadystatechange
。
加载事件和state=4 status=200
情况之间有什么区别?
它是被激活的负载事件还是两个不同的负载事件?
答案 0 :(得分:0)
load
事件仅表示请求是网络成功,不一定是HTTP成功。始终触发load
事件或error
事件的Ajax请求,指示网络事务的成功或失败(作为Progress Events规范的一部分):
当网络提取由于服务器关闭或无法访问的域而失败时,error
事件将触发(即,请求被同源策略阻止)。
否则,无论返回的HTTP代码是什么,load
都会触发。
load
或error
事件始终在最后一次readstatechange
事件触发后触发,因此您可以确定load
或error
回调正在运行,xhr.readyState == 4
和xhr.status
设置为正确的HTTP响应代码。