XMLHttpRequest: readyState 屬性

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

注意:此功能在 Web Workers 中可用,但 Service Workers 除外。

XMLHttpRequest.readyState 屬性返回 XMLHttpRequest 客戶端當前所處的狀態。XHR 客戶端有以下幾種狀態:

狀態 描述
0 UNSENT 客戶端已建立。open() 尚未呼叫。
1 OPENED open() 已呼叫。
2 HEADERS_RECEIVED send() 已呼叫,並且響應頭和狀態資訊可用。
3 LOADING 正在下載;responseText 包含部分資料。
4 DONE 操作已完成。
UNSENT

XMLHttpRequest 客戶端已建立,但尚未呼叫 open() 方法。

OPENED

已呼叫 open() 方法。在此狀態下,可以使用 setRequestHeader() 方法設定請求頭,並且可以呼叫 send() 方法來發起請求。

HEADERS_RECEIVED

已呼叫 send(),所有重定向(如果有)都已處理完畢,並且已收到響應頭。

LOADING

正在接收響應體。如果 responseType 設定為 "text" 或空字串,responseText 將在載入過程中包含部分文字響應。

DONE

請求操作已完成。這可能意味著資料傳輸已成功完成或失敗。

示例

js
const xhr = new XMLHttpRequest();
console.log("UNSENT", xhr.readyState); // readyState will be 0

xhr.open("GET", "/api", true);
console.log("OPENED", xhr.readyState); // readyState will be 1

xhr.onprogress = () => {
  console.log("LOADING", xhr.readyState); // readyState will be 3
};

xhr.onload = () => {
  console.log("DONE", xhr.readyState); // readyState will be 4
};

xhr.send(null);

規範

規範
XMLHttpRequest
# 狀態

瀏覽器相容性