文档章节

如何拦截或修改原生ajax请求

lovebing
 lovebing
发布于 2015/03/30 21:30
字数 141
阅读 1532
收藏 8

jQuery已经实现了各种 ajax 事件,如 beforeSend 等,但原生的 XMLHttpRequest 并没有这种事件。在没有用 jQuery的情况下,如果想修改 ajax 请求,得做一些特殊的处理。以下是我处理的方法:

XMLHttpRequest.prototype._open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url, async) {
    // 用对象便于修改参数
    var options = {
        method: method,
        url: url,
        async: async
    };
    if('function' === typeof window.beforeXMLHttpRequestSend) {
        if(!window.beforeXMLHttpRequestSend(this, options)) {
            return;
        }
    }
    this._open(options.method, options.url, options.async);
};


window.beforeXMLHttpRequestSend = function(xhr, options) {
    //重置参数
    options.url = 'reset url';
    options.method = 'PUT';
    options.async = false;
    
    //禁止发送请求
    //return false;
    
    //发送请求
    return true;    
};



© 著作权归作者所有

共有 人打赏支持
lovebing
粉丝 12
博文 19
码字总数 3273
作品 0
深圳
后端工程师
私信 提问
加载中

评论(3)

请叫我赵小宝
请叫我赵小宝
还是喜欢用jquery
lovebing
lovebing

引用来自“yaray”的评论

这个新方法加在window上范围太大了吧
不大,因为我是要对不特定的请求修改请求地址
zigzagroad
zigzagroad
这个新方法加在window上范围太大了吧
Mockjs,再也不用追着后端小伙伴要接口了

相信大家都存在这样的一个困扰,在前后端分离的大环境下, 前端需要后端的接口去完成页面的渲染, 但是大部分的情况下,前后端需要同时进行开发, 这种情况下,后端还没完成数据输出,前端只好写静...

小钱钱阿圣
2017/08/22
0
0
为XHR对象所有方法和属性提供钩子

摘要 ✨长文 阅读约需十分钟 ✨跟着走一遍需要一小时以上 ✨约100行代码 前段时间打算写一个给手机端用的假冒控制台 可以用来看的输出 这一块功能目前已经完成了 但是后来知道有一个腾讯团队...

NISAL
2018/07/02
0
0
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
2.6K
6
sessionOrcookie/AisMVC

#AisMVC,一款仿SpringMVC框架的轻便快捷的Java MVC开发框架 ####前言 写这个框架的意义在于过去使用springmvc框架作为项目中的Controller层,springmvc的简洁配置和使用让我们选择了它,但这个...

sessionOrcookie
2016/06/28
0
0
Axios源码深度剖析 - AJAX新王者

axios源码分析 - XHR篇 文章源码托管在github上,欢迎fork指正! axios 是一个基于 Promise 的http请求库,可以用在浏览器和node.js中,目前在github上有 42K 的star数 备注: 每一小节都会从...

wanghairong-i
2018/05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

弹窗时候禁止页面滚动

1、依靠css 将页面 document.documentElement.style.overflow='hidden'; document.body.style.overflow='hidden';//手机版设置这个。 如果设置了如上,页面的滚动条将会消失,此时鼠标滚轮失......

Jack088
29分钟前
7
0
.NET的数学库NMath实用教程——创建最小二乘法

NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程,有任何建议或提示...

ymy_666666
29分钟前
2
0
索尼为收购工作室准备,对抗微软?

对比来说,索尼方面不但没有增加新的工作室,反而在过去两年内关闭了一些工作室。面对微软的步步紧逼,索尼最新的招聘广告暗示将来有可能会收购一些工作室。 在领英上,索尼互动娱乐发布了两...

linuxCool
29分钟前
2
0
公司网站有漏洞被入侵该怎么解决

2019年1月14日消息,thinkphp又被爆出致命漏洞,可以直接远程代码执行,getshell提权写入网站木马到网站根目录,甚至直接提权到服务器,该漏洞影响版本ThinkPHP 5.0、ThinkPHP 5.0.10、Think...

网站安全
41分钟前
4
0
centos7 Nginx+rtmp 搭建流媒体服务器

一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum -y install gcc gcc-c++ 二. PCRE pcre-devel 安装 PCRE(Perl Compatib...

legend3
58分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部