首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ajax beforeSend修改数据

使用ajax beforeSend修改数据
EN

Stack Overflow用户
提问于 2010-08-19 20:10:24
回答 3查看 29.8K关注 0票数 19

假设我有一个来自jQuery的Ajax调用,如下所示:

代码语言:javascript
复制
$.ajax({
   url: myUrl,
   data: myData,
   type:'post'
});

我希望能够使用以下工具添加到myData中

代码语言:javascript
复制
$.ajaxSetup({
   beforeSend: function(call){...}
});

结果应该是所有的ajax调用( post和get)都被修改了,所以如果我得到一个额外的参数IsAjax=true

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-06 02:20:53

This blog post解释了如何使用$.ajaxSetup添加数据。它累积起来就像$.extend这样做:

代码语言:javascript
复制
$.ajaxSetup({
  data:{
    isAjax:true
  }
});
票数 17
EN

Stack Overflow用户

发布于 2013-07-12 13:35:16

代码语言:javascript
复制
$.ajaxSetup({
  beforeSend: function(jqXHR, settings) {
    settings.data = $.extend(settings.data, {isAjax: true});
    return true;
  }
});

====更新====

data是对象时,除非processData选项设置为false,否则jQuery将从对象的键/值对生成数据字符串。例如,{ a: "bc", d: "e,f" }被转换为字符串"a=bc&d=e%2Cf"。如果值是数组,jQuery将根据traditional设置的值(如下所述)来序列化具有相同键的多个值。例如,{ a: [1,2] }将成为具有默认traditional: false设置的字符串"a%5B%5D=1&a%5B%5D=2"

https://api.jquery.com/jquery.ajax/

如你所见,processData的设置应该是false。因此,当您在$.ajax()中或在$.ajaxSetup()中全局请求时,可以对其进行设置。

票数 30
EN

Stack Overflow用户

发布于 2017-09-27 17:09:37

您可以在$.ajax()中实际使用beforeSend;

代码语言:javascript
复制
$.ajax({
  beforeSend: function(xhr){
    this.data += '&' + $.param({
      param: 'test'
    });
  }
});
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3521594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档