XMLHttpRequest(XHR)对象的 readyState 属性表示请求的状态,它是一个整数,取值范围为 0 到 4。每个数值代表不同的请求状态,以及在请求的生命周期中发生的事件。以下是 readyState 的各个值和对应的含义:

1. readyState 值:0(UNSENT)
   - 含义: 请求已创建,但尚未打开(open 方法尚未调用)。
   - 对应事件: 无。

2. readyState 值:1(OPENED)
   - 含义: 请求已打开(open 方法已调用),但尚未发送(send 方法尚未调用)。
   - 对应事件: open 事件。

3. readyState 值:2(HEADERS_RECEIVED)
   - 含义: 请求已接收到服务器的响应头(send 方法已调用)。
   - 对应事件: loadstart 事件。

4. readyState 值:3(LOADING)
   - 含义: 请求正在接收服务器的响应体(正在下载数据)。
   - 对应事件: progress 事件。

5. readyState 值:4(DONE)
   - 含义: 请求已完成,且响应数据已完全接收。
   - 对应事件: load 事件。

通过检查 readyState 的值,可以在不同的请求阶段执行相应的操作。以下是一个简单的例子,演示如何使用 readyState 处理请求状态:
var xhr = new XMLHttpRequest();

// 设置回调函数,处理请求状态的变化
xhr.onreadystatechange = function() {
  // 检查 readyState 的值
  if (xhr.readyState === 4) {
    // 请求已完成
    if (xhr.status === 200) {
      // 请求成功,处理响应数据
      var responseData = JSON.parse(xhr.responseText);
      console.log('Response Data:', responseData);
    } else {
      // 请求失败,处理错误信息
      console.error('Request failed. Status:', xhr.status);
    }
  }
};

// 打开并发送请求
xhr.open('GET', 'https://jsonplaceholder.typicode.com/todos/1', true);
xhr.send();

在上述代码中,xhr.onreadystatechange 事件处理函数会在 readyState 的值发生变化时触发。当 readyState 的值为 4 时,表示请求已完成。然后,我们检查 xhr.status 来确定请求的成功或失败,并根据需要处理响应数据。


转载请注明出处:http://www.zyzy.cn/article/detail/13182/AJAX