$.ajax 中的contentType

本文探讨了使用jQuery的$.ajax方法在处理复杂JSON数据时遇到的问题,并提供了将contentType设置为'application/json'并使用JSON.stringify序列化的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前一直没有留意这个属性,然后项目中突然发现同一个请求,传参和不传参的contentType不同。

先看看jquery文档中的$.ajax:

contentType属性

类型:String

默认值: "application/x-www-form-urlencoded"。发送信息至服务器时内容编码类型。

然而 application/x-www-form-urlencoded 这种形式可以传简单的json,即不带嵌套类型的json;

而复杂的 JSON 就没办法了,如下:

{
  data: {
    a: [{
      x: 2
    }]
  }
}

复杂的 JSON 传进去可以发送请求,但是服务端收到数据为空, 因为 ajax 没有办法知道怎样处理这个数据。

解决办法如下:

$.ajax({
    dataType: 'json',
    contentType: 'application/json',
    data: JSON.stringify({a: [{b:1, a:1}]})
})

定义一种叫 application/json 的类型。这种类型是 text , 我们 ajax 的复杂JSON数据,用 JSON.stringify序列化后,然后发送,在服务器端接到然后用 JSON.parse 进行还原就行了,这样就能处理复杂的对象了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值