拦截Jquery AJAX请求以插入其他变量?

时间:2012-12-28 00:52:11

标签: javascript jquery ajax

有没有办法拦截通过jquery发出的ajax请求,在其中插入其他变量?

我知道.ajaxStart()允许你注册一个回调,它会在ajax请求开始时触发事件,但我正在寻找的是一种方法来取消ajax请求,如果它满足某些条件(例如url) ,在其内容中插入更多变量,然后提交。

这是针对第三方软件的插件,其自身代码无法直接更改。

编辑:似乎.ajaxSetup()允许您设置一些与ajaxRequests相关的全局变量。如果我注册了beforeSend函数,该函数是否能够取消请求以满足某些条件的不同?

2 个答案:

答案 0 :(得分:7)

想出来,这是我使用的代码:

jQuery(document).ready(function()
{    
    var func = function(e, data) 
    {       
        //data.data is a string with &seperated values, e.g a=b&c=d&.. . 
        //Append additional variables to it and they'll be submitted with the request:      
        data.data += "&id=3&d=f&z=y";
        return true;
    };
    jQuery.ajaxSetup( {beforeSend: func} );
    jQuery.post('example.php', {a : 'b'}, 'json');    
} );

要取消请求,从func返回false似乎有效。

答案 1 :(得分:0)

two methods to intercept ajax call并在其中插入其他数据:javascript方法和jQuery方法:

javacript方法

(function(send) {
    XMLHttpRequest.prototype.send = function(body) {
        var info="send data\r\n"+body;
        alert(info);
        send.call(this, body);
    };

jQuery方法

$.ajaxSetup({
    beforeSend: function (xhr,settings) {
        alert(settings.data);
        alert(settings.url);
    }
});