我想为jQuery处理的全局ajax设置ajax设置
如果ajax网址为“www.example.com”,则数据(查询字符串或正文)将附加标记。
我尝试了两种方法
$.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'
}
});
在网址为www.example.com->时添加令牌它不起作用!
在console / debugger中,originalOptions对象添加了token属性, 但发送的请求没有令牌参数
$.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'
}
});
反向解析,为每个ajax请求添加令牌。
与上一个相同,settings.url由控制台/调试器中的字符串替换更改。 但请求仍然发送原始URL。
在jsfiddle中测试:http://jsfiddle.net/qVLN2/2/
感谢您的阅读和帮助:)
答案 0 :(得分:10)
您应该注意到String.replace函数不会影响原始字符串!
您可以尝试在代码中使用settings.url = settings.url.replace(....);
。