jQuery - 我可以在每个get / post请求中“附加”一个附加参数

时间:2010-09-06 07:42:58

标签: javascript jquery metaprogramming

我想扩展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 }

基本上我想拦截请求并在它们到达服务器端之前编辑它的参数。感谢。

2 个答案:

答案 0 :(得分:1)

查看beforeSend(XMLHttpRequest)

  

修改前的回调   之前的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/