2
我正在重新觀看WWDC12關於HTML5高級效果的視頻,並注意到他們使用req.addEventListener("load",callback,true)
而不是通常的onreadystatechange
。使用eventListener或readyStateChange會更好嗎?
加載事件和state=4 status=200
的情況有什麼區別?
這是相同的負載事件被解僱或兩個不同的?
我正在重新觀看WWDC12關於HTML5高級效果的視頻,並注意到他們使用req.addEventListener("load",callback,true)
而不是通常的onreadystatechange
。使用eventListener或readyStateChange會更好嗎?
加載事件和state=4 status=200
的情況有什麼區別?
這是相同的負載事件被解僱或兩個不同的?
load
事件僅表示請求是網絡成功,不一定是HTTP成功。與Ajax請求總是任一觸發一個load
事件或error
事件,指示網絡交易的成功或失敗(作爲Progress Events規範的一部分):
的error
事件觸發時,網絡抓取失敗,因爲到服務器關閉或在不可訪問的域上(即,請求被同源策略阻止)。
否則,無論返回的HTTP代碼如何,load
都會觸發。
的load
或error
事件總是在最後大火,在最後readstatechange
事件已觸發,所以你可以肯定的是,load
或error
回調與xhr.readyState == 4
和xhr.status
設置爲正確的HTTP響應代碼運行。
相關:http://stackoverflow.com/questions/6783053/xmlhttprequest-is-always-calling-load-event-listener-even-when-response-has-e。從這個答案,我的猜測是'load'在'readyState == 4'時觸發。 'load'事件僅指示*網絡*成功(即,找到服務器),而不是HTTP成功(例如,可能返回HTTP錯誤代碼)。但是,我無法找到詳細說明如何以及何時爲Ajax請求觸發'load'的規範。 – apsillers