2 回答

TA貢獻1860條經驗 獲得超9個贊
XMLHttpRequest 對象的 onload 回調函數是在異步請求加載完成后所執行的函數,當JavaScript 監測到請求的數據全部傳輸完成后就會觸發該函數。而 open() 函數設置異步請求的 method、URL 和同步方式等參數,執行 open() 后再執行 send() 函數才開始向服務器發送請求。
另外,onload 回調函數實際上是 XHR2 中新加入的功能,部分瀏覽器可能不支持這個函數名。要避免不兼容的現象,可以使用傳統 XMLHttpRequest,如:
1 2 3 4 5 6 7 8 9 10 11 | //省略其他代碼 request.onreadystatechange=function() // 狀態改變回調函數 { // 判斷 request.readyState==4 的效果等同于 onload if(request.readyState==4 && request.status==200) { // 加載且響應正常完成后執行的代碼.... } } request.open("GET",url,true); // 打開對象,也可以說是設置參數 request.send(); // 發送請求 |
還有一些誤解需要澄清一下,
window.onload 回調函數其實是在頁面加載完成后(包括圖片內容的顯示)才會執行,并不是頁面加載的等待過程中就執行。
request.open() 并沒有發送請求,只是設置一些參數,在 send() 時才會發送(注意不要漏寫這條語句),發送后就會進入 readyState 監聽狀態,當 readyState 的值有改變就會執行 onreadystatechange 回調函數,當異請求的步數據接收完成(即 readyState 變為 4)后就會執行 onload 回調函數(注意僅在 XHR2 中有效)。
添加回答
舉報