使用jQuery.ajaxSetup定义beforeSend和alter数据发送

时间:2013-11-14 04:40:27

标签: javascript jquery ajax

基本上,我想创建一个通用的beforeSend函数来改变每个jQuery.ajax方法发送的数据,这样我就可以为每个请求添加一个自定义变量(用于跟踪),而不需要知道它的顺序。请求已发送。

例如,假设我想计算特定用户在特定页面上发送的请求数量。

这样的事情:

var numRequests = 0;

$.ajaxSetup({
    beforeSend: function(jqXHR, Obj){
      console.log(arguments);
      dataToBeSent.numRequests = ++numRequests;
    }
});

$.ajax({
    url: 'test.js',
    data: {testVar:1,testVar:"2",testVar:{3:1}},
    complete: function(){
      console.log('complete');
    }
});

这可能吗?

我在这里有一个基本的JSfiddle:http://jsfiddle.net/kY5UP/

2 个答案:

答案 0 :(得分:0)

您可以传递这样的额外数据:

var numRequests = 0;

$.ajaxSetup({
    beforeSend: function(jqXHR, Obj){
      console.log(Obj.data);
      //this code line adds extra parameter to the request
      Obj.data = $.extend(Obj.data, {numRequests: ++numRequests});
    }
});

$.ajax({
    url: 'test.js',
    data: {testVar:1,testVar:"2",testVar:{3:1}},
    complete: function(){
      console.log('complete');
    }
});

答案 1 :(得分:-1)

是..你可以这样做:

var numRequests = 0;

$.ajaxSetup({
    beforeSend: function(jqXHR, Obj){
      console.log(Obj.data);
      Obj.data.numRequests = ++numRequests;
    }
});

$.ajax({
    url: 'test.js',
    data: {testVar:1,testVar:"2",testVar:{3:1}},
    complete: function(){
      console.log('complete');
    }
});