拦截Jquery AJAX请求以插入其他变量?
有没有办法拦截通过jquery发出的ajax请求,以便在其中插入其他变量?
我知道.ajaxStart()允许你注册一个回调,它会在ajax请求开始时触发事件,但我正在寻找的是一种方法来取消ajax请求,如果它满足某些条件(例如url),插入更多将变量放入其内容,然后提交。
这是针对第三方软件的插件,其自身代码无法直接更改。
编辑:似乎.ajaxSetup()允许您设置一些与ajaxRequests相关的全局变量。 如果我注册了beforeSend函数,该函数是否能够取消请求以满足某些条件的不同?
弄清楚,这是我使用的代码:
jQuery(document).ready(function() { var func = function(e, data) { //data.data is a string with &seperated values, eg 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似乎有效。
有两种方法可以拦截ajax调用并在其中插入其他数据: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); } });