js如何监听浏览器超时挂断XMLHttpRequest请求
时间: 2024-04-03 18:35:24 浏览: 115
可以通过监听 XMLHttpRequest 对象的 readyState 和 status 属性来判断请求的状态,包括超时和挂断。
readyState 属性表示 XMLHttpRequest 对象的状态,取值如下:
- 0: 请求未初始化
- 1: 服务器连接已建立
- 2: 请求已接收
- 3: 请求处理中
- 4: 请求已完成,且响应已就绪
status 属性表示 HTTP 响应状态码,取值如下:
- 2xx: 表示成功处理请求
- 3xx: 表示需要重定向
- 4xx: 表示客户端错误
- 5xx: 表示服务器错误
当 readyState 的值为 4 时,可以通过 status 属性判断请求的状态。如果 status 的值为 0,表示请求被挂断;如果 status 的值为 408,表示请求超时。
以下是一个监听超时和挂断请求的示例代码:
```javascript
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/api/data');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
// 请求成功
console.log(xhr.responseText);
} else if (xhr.status === 0) {
// 请求被挂断
console.log('请求被挂断');
} else if (xhr.status === 408) {
// 请求超时
console.log('请求超时');
} else {
// 其他错误
console.log('请求出错');
}
}
};
xhr.timeout = 10000; // 设置超时时间,单位为毫秒
xhr.ontimeout = function() {
console.log('请求超时');
};
xhr.send();
```
在代码中,通过设置 XMLHttpRequest 对象的 timeout 属性可以设置超时时间,单位为毫秒。如果请求超时,会触发 XMLHttpRequest 对象的 ontimeout 事件,可以在该事件中处理超时逻辑。
阅读全文