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 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均在外面用其他实体接收