如何在ajax中设置contentType,contentType常见的几种情况

最近在开发中遇到ajax提交参数,后台无法获取到参数的问题,先整理下ajax的几种常见属性

1 .contentType常见的几种情况
application/json; charset=utf-8 要求data必须是json串

"text/html"  对于html
"text/xml " 对于xml

application/x-www-form-urlencoded (默认值)
使用contentType时候要求data数据相对应,contentType同时里面可以设置数据的编码方式
2. ajax提交数据时,data传参的几种方式
1 设置为类似于 name=zs&sex=1
2 设置为json对象 {key:value,key:value} 的格式 这个格式的数据$.ajax()内部会调用$.param()方法拼接为上面格式的数据
上面两种都不用设置contentType ,使用默认的就行,不管是post 还是get方式
serializeArray()可以获取json对象,在调用$.param()方法可以转为序列化的字符串
3.提交方式get提交和post提交
post提交:

$.ajax({
		type:'post',
		url: '/erongDemo/bankServlet',
		data:{"name":$("#sname").val(),"sex":$("#sex").val()},
		contentType:'application/json;charset=utf-8',
		dataType:'json',
		success:function(data){
			
		}
	});

post 提交,设置contentType为application/json,数据也是json对象,在servlet中无法获取到值,在浏览器上看了下,
数据已经被序列化了,可是request无法获取到值,最后解决方案是改为contentType为默认值,

在这里插入图片描述
在这里插入图片描述
get提交:

$.ajax({
		type:'get',
		url: '/erongDemo/bankServlet',
		data:{"name":$("#sname").val(),"sex":$("#sex").val()},
		contentType:'application/json',
		dataType:'json',
		success:function(data){
		}
	});

这次使用get提交,contentType同样设置为application/json,看下浏览器,头信息里面并没有contentType这个属性,
应该是get提交参数是不放在请求实体中,是拼接在url后面.

在这里插入图片描述
这次提交数据将contentType去掉,同样请求头中没有这个属性,可以不设置contentType

结论: ajax post提交不设置contentType 使用默认值 application/x-www-form-urlencoded适用于提交data为json对象的情况

而get提交不用设置contentType

借鉴

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸葛延昌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值