小编典典

是否可以通过beforeSend回调修改XMLHttpRequest数据?

ajax

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


阅读 458

收藏
2020-07-26

共1个答案

小编典典

是的,您可以对其进行修改,
实际上beforeSend是的签名(在jQuery 1.4+中): __

beforeSend(XMLHttpRequest, settings)

即使文档只是just
beforeSend(XMLHttpRequest)您也可以在这里看到它的名称ssettings对象在哪里:

if ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {

因此,您 可以 在此data之前修改参数(请注意
__
,即使传入了一个对象,
到目前为止,该参数
已经

是字符串了
)。修改它的示例如下所示:

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

如果有帮助,则将相同的签名应用于.ajaxSend()全局处理程序( 确实
具有正确的文档显示该签名),如下所示:

$(document).ajaxSend(function(xhr, s) {
  s.data += "&newProp=newValue";
});
2020-07-26