之前后台数据接收不到,然后前台数据使用qs.stringify()转换传递就可以了;
然后最近前台JSON.stringify()传递,后台的参数必须加 @RequestBody才可以,我就不想加这个注解,然后查资料总结如下:
一般前端在 jquery 的 ajax 中, contentType都是默认的值:application/x-www-form-urlencoded,只能处理简单的json,复杂的就不行了!!!
1:JSON.stringify()
如果前端使用如下:
var user= {
"username" : username,
"password" : password
};
$.ajax({
/
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(user)
})
后端就必须使用:
@RequestMapping("/jsontest")
public void test(@RequestBody User user ){
String username = user.getUsername();
String password = user.getPassword();
}
或者
@RequestMapping("/jsontest")
public void test(@RequestBody Map map ){
String username = map.get("username").toString();
String password = map.get("password").toString();
}
或者
public void test(@RequestBody String jsonData) {
JSONObject jsonObject = JSON.parseObject(jsonData);
String username= jsonObject.getString("username");
String username= jsonObject.getString("password");
}
我们看到的样式就如:"{"username":"username","password":password}"
2:qs.stringify()
前端如下:
var user= {
"username" : username,
"password" : password
};
$.ajax({
contentType: 'application/json',
data: JSON.stringify(user)
})
后端参数接收就不用加@RequestBody了
我们看到的样式就如:username=username&password=password
3:@RequestBody
①. 使用@RequestBody
当请求content_type为:application/json类型的请求,数据类型为json时, json格式如下:{“aaa”:“111”,“bbb”:“222”}
②. 不使用@RequestBody
当请求content_type为:application/x-www-form-urlencoded类型的或multipart/form-data时,数据格式为aaa=111&bbb=222