XMLHttpRequest(XHR)是现代Web开发中不可或缺的技术之一。它允许我们在不刷新整个页面的情况下,与服务器进行数据交换。readyState
是XHR对象中的一个属性,它表示请求/响应过程的当前活动阶段。了解readyState
对于高效使用XHR至关重要。
1、什么是XHR readyState?
readyState
是XMLHttpRequest对象的一个只读属性,它代表了当前请求的状态。readyState
的值是一个整数,它随着请求过程的不同阶段而变化。这些阶段如下:
0(UNSENT) :请求未初始化。尚未调用open()方法。
1(OPENED) :服务器连接已建立。已调用open()方法,但尚未调用send()方法。
2(HEADERS_RECEIVED):请求已接收。send()方法已被调用,且头部和状态已可获取。
3(LOADING) :请求处理中。响应体正在下载中,此时部分数据可能已可用。
4(DONE) :请求完成。整个请求过程已完成,且响应已就绪。
2、如何使用XHR readyState?
要使用readyState
,首先需要创建一个XMLHttpRequest对象。然后,通过设置一个事件处理函数来监听readystatechange
事件。每当readyState
的值改变时,都会触发这个事件。
1 var xhr = new XMLHttpRequest();
2
3 xhr.onreadystatechange = function() {
4 if (xhr.readyState === 4 && xhr.status === 200) {
5 // 请求成功,处理响应数据
6 console.log(xhr.responseText);
7 }
8 };
9
10 xhr.open('GET', 'https://example.com/data', true);
11 xhr.send();
在这个例子中,我们首先创建了一个XHR对象。然后,我们为readystatechange
事件设置了一个处理函数。在这个函数中,我们检查readyState
是否为4(表示请求已完成)以及HTTP状态码是否为200(表示请求成功)。如果是,我们就处理响应数据。
readyState
的值是只读的,不能被修改。readyState
的变化是同步发生的,但readystatechange
事件是异步触发的。- 在某些情况下,
readyState
可能会直接跳过某些值,例如从0直接变为4。
3、HTTP状态码详解
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误