2 回答

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