1. 拦截器
拦截器的设置可以让我们在发出 request 或接到 response 之前做一些事情,例如改变 response的数据格式,或是根据不同 request 来添加不同的config 等。请求拦截器的即在请求发送前进行的操作,如设置是否需要token;响应拦截器的即接收到响应后进行操作,如通过状态码设置响应失败的跳转等
PS:若对Ajax的基本使用还不熟悉推荐先看看博客:AJAX详解
2.原生AJAX实现拦截器
需要改变send方法, XMLHttpRequest.prototype.send
在其原型中重新定义了send函数。
const intercept = (method, url, requestCallback, responseCallback) => {
let xhr = new XMLHttpRequest();
//修改原型的open和send方法来创建请求和响应拦截器
let open = XMLHttpRequest.prototype.open;
let send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.open = function () {
requestCallback();
open.call(this, method, url);
};
XMLHttpRequest.prototype.send = function () {
//当Ajax的状态码改变时调用
this.addEventListener('readystatechange', function () {
//请求成功时调用,也可设置别的状态码时调用的函数
if (this.readyState === 4 && this.status === 200) {
//响应拦截器,返回有用的data
let response = JSON.parse(this.responseText);
responseCallback(response.data);
注意,本文已迁移
本文具体内容已迁移到新网页,请读者移步查看,后续所有文章更新也将在新网站:
Ajax拦截器的实现
3.使用JQ的ajax实现拦截器
原文地址:https://blog.csdn.net/qq_45881272/article/details/125026045
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27006.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。