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
# 状态

浏览器兼容性