1.post请求,默认传输格式application/x-www-form-urlencoded,data是对象,使用键值对,传输复杂数据
var y={
id:5,
name: "张三",
city:"上海",
}
var x={
sex:'男',
user:y,
};
$("#aaa").click(function () {
$.post({
url:'/hello/aaa',
//contentType:"application/json;charset=utf-8",
data:{obj:JSON.stringify(x)},
success:function(data){
alert(data);
}
});
});
后台接收
public User aaa(String obj){
JSONObject jobj=JSON.parseObject(obj);
String sex=jobj.getString("sex");
String user1=jobj.getString("user");
User user=JSON.parseObject(user1,User.class);
return user;
}
2.post请求contentType:"application/json;charset=utf-8",data必须是json字符串,后台接收要加@RequestBody,传输复杂数据
var y={
id:5,
name: "张三",
city:"上海",
}
var x={
sex:'男',
user:y,
};
$("#aaa").click(function () {
$.post({
url:'/hello/aaa',
contentType:"application/json;charset=utf-8",
data:JSON.stringify(x),
success:function(data){
alert(data);
}
});
});
后台接收
(1)
public User aaa(@RequestBody String obj){
JSONObject jobj=JSON.parseObject(obj);
String sex=jobj.getString("sex");
String user1=jobj.getString("user");
User user=JSON.parseObject(user1,User.class);
return user;
}
(2)
public User aaa(@RequestBody Map<String,Object> ma){
String sex=ma.get("sex").toString();
Map<String,Object> ma1=(Map<String,Object>)ma.get("user");
String s=JSON.toJSONString(ma1); //map转json字符串
User user=JSON.parseObject(s,User.class); //json字符串转实体类
return user;
}
总而言之就是:如果没加contentType:"application/json",那么data就应该对应的是对象;反之,如果加了contentType:"application/json",那么ajax发送的就必须是字符串。