1

基本上,我想创建一个通用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/

4

2 回答 2

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');
    }
});
于 2017-07-11T10:31:15.533 回答
-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');
    }
});
于 2013-11-14T04:55:11.287 回答