ajax请求当发送post方式application/json格式数据,url后面又带有参数的时候

本文探讨了使用JSON与普通POST请求在数据传递上的区别,特别是在前端使用jQuery.ajax与后端Spring MVC框架交互时,如何正确设置contentType参数,避免因数据类型不匹配导致的错误。

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

var url="${pageContext.request.contextPath}/json/jsonTest.do?idl=123&id=111";

$.ajax( {type : "POST",
url : url,
contentType:"application/json",
dataType: "JSON",
async : false, 
data : JSON.stringify({"name":"whj","age":"18","sex":"nv"}),
//data : {"id":"1","name":"whj","age":"18","sex":"nv"},
beforeSend: function(){

},
complete: function(){

},
success : function(data){//格式{key:value}
alert(data);
alert(data[0].name);
},
error: function(data) {
alert("error"); 
}
});

后台接受方法

@RequestMapping(value="jsonTest")
public @ResponseBody Person execute8(  Person person,String idl,Stirng id){
//public @ResponseBody List<Person> findAll(){
//模拟数据库方法
Logger.getLogger(JsonAction.class).debug("进入personFindAllaction");
后台控制台输出可以看到

person.toString=[id":"1","name":"whj","age":"18","sex":"nv"].

idl=123

id=111

return new Person(2,"whj1",25,"nan",new Date());

}

这里不会报错。

但是当去掉contentType:"application/json",

$.ajax( {type : "POST",

url : url,
//contentType:"application/json",
dataType: "JSON",
async : false, 
data : {"name":"whj","age":"18","sex":"nv"},
//data : {"id":"1","name":"whj","age":"18","sex":"nv"},
beforeSend: function(){

},
complete: function(){

},
success : function(data){//格式{key:value}
alert(data);
alert(data[0].name)


},
error: function(data) {
alert("error"); 
}
});

后台会报错。因为person id是int类型的 这时候其实送给后台id是111,1,格式转换时就会报错,具体为什么送json时不会报错,我估计是json直接把下面作为一个对象注入到person里面,其他id均在外面用其他实体接收

原文:https://blog.youkuaiyun.com/weixin_40648117/article/details/78667540

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值