我想扩展jQuery,使得在客户端发出的每个post / get请求都会发送一个额外的参数(总是相同的key:value)。我需要这个在客户端检测是否通过jQuery发出请求,因为我有几个js libs在工作。额外的参数只是jquery : true
。典型的请求通常如下所示:
jQuery.post('/users/save', { name : 'john', age : 24 }, ....)
有没有办法通过扩展jQuery或其他一些方式来附加这个附加参数,以便它到达服务器时看起来像这样:
{ name : 'john', age : 24, jquery : true }
基本上我想拦截请求并在它们到达服务器端之前编辑它的参数。感谢。
答案 0 :(得分:1)
修改前的回调 之前的XMLHttpRequest对象 发送。使用此选项设置自定义标头 XMLHttpRequest传递为 唯一的论点。这是一个Ajax 事件。你可能会返回false 取消请求的功能
您应该可以将其与ajaxSetup
一起使用答案 1 :(得分:1)
在执行任何AJAX请求之前,尝试在代码中放置以下内容:
$.ajaxSetup({
beforeSend: function(xhr) {
var newUrl = this.url;
if (newUrl.indexOf("?") != -1) {
newUrl = newUrl + '&jquery=true';
} else {
newUrl = newUrl + '?jquery=true';
}
xhr.open(this.type, newUrl, this.async);
}
});
这将在发送任何AJAX请求之前触发一个函数。该函数确定新URL应该是什么(基于是否已经附加任何查询字符串),然后重新打开XMLHttpRequest,并在末尾附加'jquery = true'。
这是一个有效的演示:http://jsfiddle.net/uz9zg/