首页 前端知识 Jquery 发送 Ajax 请求,Controller 使用 @RequestBody 注解接收参数常见报错

Jquery 发送 Ajax 请求,Controller 使用 @RequestBody 注解接收参数常见报错

2024-05-12 00:05:35 前端知识 前端哥 393 331 我要收藏

后端代码

使用 @RequestBody Map<String, String> map 接受前端的参数

@RestController
@RequestMapping("/user/account/")
@RequiredArgsConstructor(onConstructor_ = {@Autowired})
public class LoginController {
private final LoginService loginService;
@PostMapping("token")
public Map<String, String> getToken(@RequestBody Map<String, String> map) {
String username = map.get("username");
String password = map.get("password");
return loginService.getToken(username, password);
}
}cha
复制

前端代码 1(X)

$.ajax({
url: "http://127.0.0.1:8888/user/account/token/",
type: "post",
data: {
username: "mike",
password: "123456"
},
success(resp) {
console.log(resp);
},
error(resp) {
console.log(resp);
}
});
复制

导致 org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported 异常

前端代码 2(X)

OK,我手动加上 Content-Type 行了吧?

$.ajax({
url: "http://127.0.0.1:8888/user/account/token/",
type: "post",
headers: {
'Content-Type':'application/json'
},
data: {
username: "mike",
password: "123456"
},
success(resp) {
console.log(resp);
},
error(resp) {
console.log(resp);
}
});
复制

还是不行!

导致 org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'username': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false') 异常

前端代码 3(√)

加上 JSON.stringify() 才行!

$.ajax({
url: "http://127.0.0.1:8888/user/account/token/",
type: "post",
headers: {
'Content-Type':'application/json'
},
data: JSON.stringify({
username: "mike",
password: "123456"
}),
success(resp) {
console.log(resp);
},
error(resp) {
console.log(resp);
}
});
复制

成功!
在这里插入图片描述

补充

如果想使用前端代码 1 的格式的话,后端使用 @RquestParam 注解接受即可。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/8232.html
标签
评论
还可以输入200
共0条数据,当前/页
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!