AJAX中XMLHttpRequest.readyState总是为4
时间: 2024-03-15 12:43:45 浏览: 60
这是不正确的。XMLHttpRequest.readyState 的值表示请求的状态,它有五个可能的值:
- 0: 请求未初始化,open() 方法还未被调用。
- 1: 服务器连接已建立,open() 方法已经被调用,但是 send() 方法还未被调用。
- 2: 请求已接收,send() 方法已经被调用,并且头部和状态已经可获得。
- 3: 请求处理中,响应中已经有部分数据可用了,但是服务器还没有完成响应的生成。
- 4: 响应已完成,可以访问服务器响应并使用它了。
因此,XMLHttpRequest.readyState 不一定是 4,只有在请求完成(即 readyState 为 4)时才能访问服务器响应。
相关问题
xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200
`XMLHttpRequest.readyState==4 && XMLHttpRequest.status==200` 是用来检查Ajax请求完成状态的一种常见条件。当 `readyState` 属性等于 4 表示请求已完成(不管是成功还是失败),而 `status` 属性为 200 表示HTTP响应的状态码为"200 OK",这通常意味着服务器成功返回了数据。
在JavaScript中,当执行异步请求时,我们可能会设置一个回调函数(如上面代码所示)来监听 `onreadystatechange` 事件。每当 `readyState` 改变时,这个函数会被触发。如果 `readyState` 已经达到4并且 `status` 是200,这意味着请求已经成功完成,我们可以在这个时候读取并处理服务器返回的数据(`xhr.responseText`)。
举例来说:
```javascript
var xhr = getXmlHttpRequest();
xhr.open("GET", "example.com/data", true);
xhr.send();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log('Response:', xhr.responseText);
}
};
```
这段代码会打印出成功的HTTP响应文本。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="js/vue.min.js"></script> </head> <body> <input type="button" name="" id="" value="获取数据" onclick="getData()"> <br> <div id="div1"></div> </body> <script> function getData() { // 创建XMLHttpRequest var xmlHttpRequest = new xmlHttpRequest(); // 发送异步请求 xmlHttpRequest.open('GET', 'http://yapi.smart-xwork.cn/mock/169327/emp/list2'); xmlHttpRequest.send(); // 获取服务相应数据 xmlHttpRequest.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.getElementById("div1").innerHTML = this.responseText; } }; } </script> </html> 代码执行报错 01_Ajax_原生方式.html:34 Uncaught TypeError: xmlHttpRequest is not a constructor
这个错误是由于在创建 XMLHttpRequest 对象时使用了错误的构造函数。正确的构造函数名称应为 `XMLHttpRequest`,而不是 `xmlHttpRequest`。请将 ` xmlHttpRequest = new xmlHttpRequest();` 改 `var xmlHttpRequest = new XMLHttpRequest();` 来修复这个错误。
阅读全文