jquery ajax traditional参数讲解

jquery框架的ajax参数除了常用的

{
  url: 'xxx',
  type: 'xxx',
  data: 'xxx',
  success: 'xxx'
  ...
}

外还有有一个参数需要特别注意下traditional默认值是false。ajax做数据处理时,是通过jQuery.param( obj, traditional )该方法进行处理。
jquery1.4版本以后
traditional参数,默认false的时候如果是{a:{b:'value'}}是处理成a[b],这样形式,如果是数组:data:{a:[1,2]},是解析成a[]=1&a[]=2,这种方式后台确实要做兼容(取a[b]或a[])来取值。
在数组情况下把traditional参数设置成true,是解析成a=1&a=2,对后台直接通过a拿数据。但是实验了下object情况,把traditional设置成true,转成了a=[object+Object],这样就是费的了。false时解析成上面的形式应该就是类型指示作用,我看到这种格式就知道请求数据是Array还是object了,true就是按照form提交的方式传值。

  • 针对object请求传值,如何和服务器端配合:
    如果是get请求,可以按照
{data: {a:encodeURIComponent(JSON.stringify(xxx))}

这样后端需要拿到a然后再进行parse。
比较建议采用POST传值,代码:

$.ajax({
    url:'xxx',
    type:'post',
    contentType: "application/json;",
    data:JSON.stringify({a:{b:1}})
})

这样后端只需要通过加个注解@RequestBody,就会解析成一个java bean对象(注:这个java bean必须包含所有的json结构,如果不包含会报错),这样在devTool中可以看到很清晰的请求参数结构的。

附官网几个例子:

// <=1.3.2:版本号,traditional为true的情况

$.param({ a: [ 2, 3, 4 ] }); // "a=2&a=3&a=4"

// >=1.4:版本号

$.param({ a: [ 2, 3, 4 ] }); // "a[]=2&a[]=3&a[]=4"

// <=1.3.2:

$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });

// "a=[object+Object]&d=3&d=4&d=[object+Object]"

// >=1.4:

$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });

// "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 3,298评论 0 7
  • jQuery ajax - ajax() 方法 http://www.w3school.com.cn/jquery...
    光剑书架上的书阅读 1,170评论 0 15
  • 你可以写,你该去写,而且如果你足够勇敢,开始写了,你要坚持写下去。写作,跟其他的艺术创作一样,是神奇的生命之水。这...
    木语花颜阅读 122评论 0 1
  • 她的老公贝克汉姆是公认的全世界女人最想睡最迷人最性感的的男人 她的女儿小七大概是这个世界上唯一一个比皇室宝贝曝光量...
    120ff06ece09阅读 989评论 0 2