XHR readyState学习笔记
什么是XHR readyState
XMLHttpRequest (XHR) 是浏览器中的一个API,可以用来向服务器发送请求并接收响应。在发送请求和接收响应的过程中,XHR对象会有一个 readyState 属性,用于表示请求的当前状态。
以下是 readyState 的五个值及其含义:
- 0: 请求未初始化,即 xhr.open() 方法还未调用。
- 1: 服务器连接已建立,即 xhr.open() 方法已调用并连接到了服务器,但 send() 方法还未调用。
- 2: 请求已接收,即 send() 方法已经被调用,并且响应头和响应状态已经可获取。
- 3: 请求处理中,即正在下载响应体。
- 4: 请求已完成,且响应已就绪,即已经可以使用响应体。
实例演示
以下是一个简单的实例,用以演示 xhr.readyState 的不同状态:
javascriptCopy Codeconst xhr = new XMLHttpRequest(); // 创建一个XHR对象
xhr.onreadystatechange = function() { // 绑定 onreadystatechange 事件监听函数
if(xhr.readyState == 4 && xhr.status == 200) { // 当 readyState 为 4 且状态码为 200 时
console.log(xhr.responseText); // 打印响应体
}
};
xhr.open('GET', 'https://jsonplaceholder.typicode.com/todos/1'); // 初始化请求,请求地址为 jsonplaceholder 上的一个 Todo
xhr.send(); // 发送请求
在这个实例中,我们首先创建了一个 XHR 对象,然后绑定了一个 onreadystatechange 事件监听函数。当 XHR 对象的 readyState 值改变时,该函数就会被触发。
然后,我们以 GET 方式发送了一个请求到 jsonplaceholder 上的一个 Todo,这个请求是异步的,也就是说,JavaScript 代码不会阻塞等待响应。
当响应返回时,onreadystatechange 事件就会被触发,如果 readyState 值为 4,且响应状态码为 200,就说明请求已经完成,我们就可以访问响应体里面的数据了。
以上就是一个简单的演示,希望对您有所帮助!