js拦截ajax请求
时间: 2023-08-05 16:23:07 浏览: 162
要拦截 AJAX 请求,你可以使用 XMLHttpRequest 对象的 onreadystatechange 事件,在该事件的回调函数中处理请求和响应数据。
以下是一个示例代码:
```javascript
// 创建一个新的XMLHttpRequest对象
var xhr = new XMLHttpRequest();
// 重写XMLHttpRequest的open方法
var open = xhr.open;
xhr.open = function(method, url, async) {
// 在发送请求之前拦截请求,可以在这里修改URL或请求头等信息
console.log('intercept request:', method, url, async);
// 调用原生的open方法
open.call(xhr, method, url, async);
};
// 重写XMLHttpRequest的send方法
var send = xhr.send;
xhr.send = function(data) {
// 在发送请求之前拦截请求体,可以在这里修改请求体的数据格式等信息
console.log('intercept request body:', data);
// 调用原生的send方法
send.call(xhr, data);
};
// 监听XMLHttpRequest对象的onreadystatechange事件
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// 在接收到响应后拦截响应数据,可以在这里修改响应数据的格式等信息
console.log('intercept response:', this.responseText);
}
};
// 发送一个GET请求
xhr.open('GET', '/api/getData', true);
xhr.send();
```
在上述示例代码中,我们通过重写 XMLHttpRequest 对象的 open 和 send 方法,拦截了 AJAX 请求,并在请求和响应的各个阶段打印了一些信息。你可以在这些拦截器中添加自己的逻辑,以实现更复杂的功能。
阅读全文