一個XMLHttpRequets實例從創建到發起請求再到獲取數據, 期間會有一些中間狀態, 這些狀態是必要的, 我們可以通過判斷這些狀態值來進行不同的動作.
xhr中獲取請求狀態的屬性是: xhr.readyState 它有五種狀態可供返回:
0: xhr實例已經創建, 但xhr.open()方法尚未調用;
1: xhr.open()已調用, 但xhr.send()尚未調用, 這個階段可以使用xhr.setRequestHeader()方法設置HTTP請求頭信息;
2: xhr.send()已調用, 並且服務器返回的頭信息和狀態碼已收到;
3: 這個階段是數據的下載階段, 具體是否有數據, 需要使用xhr.responseType來作判斷, 然后通過xhr.responseText進行獲取;
4: 這個請求結束, 可能是請求成功或失敗, 但服務器傳給客戶端的數據已經完全接收. 后續不再有新的狀態
var xhr = new XMLHttpRequest(); if (xhr.readyState === 4) { // 請求結束,處理服務器返回的數據 } else { // 顯示提示“加載中……” }
注意: 每一次xhr.readyState值的變化, 都會觸發readystatechange事件, 可以給這個事件添加監聽函數做業務邏輯.