Javascript 是否可以从beforeSend回调修改XMLHttpRequest数据?

Javascript 是否可以从beforeSend回调修改XMLHttpRequest数据?,javascript,ajax,jquery,xmlhttprequest,Javascript,Ajax,Jquery,Xmlhttprequest,是否可以通过修改beforeSend回调中的XMLHttpRequest对象来修改Ajax请求中发送的数据?如果是这样,我该怎么做呢?是的,您可以修改它,的签名实际上是(在jQuery 1.4+中): 即使文档在发送之前(XMLHttpRequest),其中: 因此,您可以在此之前修改data参数(,即使您传入了一个对象)。修改它的示例如下所示: $.ajax({ //options... beforeSend: function(xhr, s) { s.data += "&am

是否可以通过修改beforeSend回调中的XMLHttpRequest对象来修改Ajax请求中发送的数据?如果是这样,我该怎么做呢?

是的,您可以修改它,的签名实际上是(在jQuery 1.4+中):

即使文档在发送之前(XMLHttpRequest),其中:

因此,您可以在此之前修改
data
参数(,即使您传入了一个对象)。修改它的示例如下所示:

$.ajax({
  //options...
  beforeSend: function(xhr, s) {
    s.data += "&newProp=newValue";
  }
});
$(document).ajaxSend(function(xhr, s) {
  s.data += "&newProp=newValue";
});
如果有帮助,相同的签名将应用于全局处理程序(该处理程序的显示方式正确),如下所示:

$.ajax({
  //options...
  beforeSend: function(xhr, s) {
    s.data += "&newProp=newValue";
  }
});
$(document).ajaxSend(function(xhr, s) {
  s.data += "&newProp=newValue";
});

我一直在寻找这个解决方案,不知道为什么我找不到s数据 所以我把请求类型改为post,它就在那里, 看起来如果您使用的是GET-request,那么数据属性不在那里,我想您必须更改s.url

对于get方法:

$.ajax({
  type:'GET',
  beforeSend: function(xhr, s) {
    s.url += "&newProp=newValue";
  }
});
对于post方法:

$.ajax({
  type:'POST',
  beforeSend: function(xhr, s) {
    s.data += "&newProp=newValue";
  }
});

如何修改?您希望修改呼叫的哪些方面?是,这是可能的。你自己发送回叫之前试过吗?如果是,有什么问题?+1对您来说,但是-1对过期的jQuery文档来说。。。删除了我的答案,因为它不正确。