XMLHttpRequest.readyState
XMLHttpRequest.readyState 屬性會回傳一個 XMLHttpRequest 客戶端物件目前的狀態。一個 XHR 客戶端可以為下列其中一種狀態:
0 |
UNSENT |
客戶端已被建立,但 open() 方法尚未被呼叫。 |
1 |
OPENED |
open() 方法已被呼叫。 |
2 |
HEADERS_RECEIVED |
send() 方法已被呼叫,而且可取得 header 與狀態。 |
3 |
LOADING |
回應資料下載中,此時 responseText 會擁有部分資料。 |
4 |
DONE |
完成下載操作。 |
- UNSENT
- XMLHttpRequest 客戶端物件已被建立,但 open() 方法尚未被呼叫。
- OPENED
- open() 方法已被呼叫。於此狀態時,可以使用 setRequestHeader() 方法設定請求標頭(request headers),並可呼叫 send() 方法來發送請求。
- HEADERS_RECEIVED
- send() 方法已被呼叫,並且已接收到回應標頭(response header)。
- LOADING
- 正在接收回應內容(response's body)。如
responseType
屬性為 "text" 或空字串,則 responseText
屬性將會在載入的過程中擁有已載入部分之回應(response)內容中的文字。
- DONE
- 請求操作已完成。這意味著資料傳輸可能已成功完成或是已失敗。
這些狀態名稱在 Internet Explorer 中略有不同。其中 UNSENT
, OPENED
, HEADERS_RECEIVED
, LOADING
和 DONE 變成了 READYSTATE_UNINITIALIZED
(0), READYSTATE_LOADING
(1), READYSTATE_LOADED
(2), READYSTATE_INTERACTIVE
(3) 和READYSTATE_COMPLETE
(4)。
var xhr = new XMLHttpRequest();
console.log('UNSENT', xhr.readyState);
xhr.open('GET', '/api', true);
console.log('OPENED', xhr.readyState);
xhr.onprogress = function () {
console.log('LOADING', xhr.readyState);
};
xhr.onload = function () {
console.log('DONE', xhr.readyState);
};
xhr.send(null);
功能 |
Chrome |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari (WebKit) |
基本支援 |
1 |
1.0 (1.7 or earlier)[1] |
7 |
(Yes) |
1.2 |
功能 |
Android |
Chrome for Android |
Firefox Mobile (Gecko) |
IE Mobile |
Opera Mobile |
Safari Mobile |
基本支援 |
? |
1.0 |
(Yes) |
? |
? |
? |