小编Chi*_*Pai的帖子

jQuery ajax在特定url上覆盖beforeSend数据/ url

我想为jQuery处理的全局ajax设置一个ajax设置

条件:

如果ajax url是'www.example.com',则数据(查询字符串或正文)将附加标记.


我尝试了两种方法

.ajaxPrefilter

$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {

    // Add data to ajax option
    if (options.url.match(/www\.example\.com/i) !== null) {
        originalOptions.data.token = 'i_am_token'
    }

});
Run Code Online (Sandbox Code Playgroud)

要在url是www.example.com->时添加令牌,它就不起作用了!

在console/debugger中,originalOptions对象添加了token属性,但发送的请求没有token参数

.ajaxSetup/beforeSend事件

$.ajaxSetup({
    beforeSend: function(jqXHR, settings) {

        // Only GET Method
        if (settings.url.match(/www\.example\.com/i) == null){
            settings.url.replace(/((\.\/[a-z][0-9])*\?+[=%&a-z0-9]*)&?token=[a-z0-9]*&?([=%&a-z0-9]*)/gi, "$1$3")
        }

    },
    data: {
        token: 'i_am_token'
    }
});
Run Code Online (Sandbox Code Playgroud)

并且反向解析,为每个ajax请求添加令牌.

与上一个相同,settings.url在控制台/调试器中由字符串替换更改.但请求仍然发送原始URL.


在jsfiddle中测试:http://jsfiddle.net/qVLN2/2/

感谢您的阅读和帮助:)

javascript ajax jquery

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

ajax ×1

javascript ×1

jquery ×1