由于jquery的get post请求 默认的contentType为:application/x-www-form-urlencoded;charset=UTF-8’,而我写的Java 接口的参数习惯性的写成了(@Request Object obj),这个时候前端报错error: "Unsupported Media Type"
message: "Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported"
path: "/user/login"
status: 415
timestamp: "2018-12-18T13:59:07.603+0000",
头疼了很久,开始的时候通过在ajxa请求上添加contentType再将data转换成json,代码如图
$("#a").click(function () {
$.ajax({
url:"/user/login",
**data:JSON.stringify(data),**
dataType:"json",
type:"post",
**headers: {
"Content-Type": "application/json; charset=utf-8"
},**//此处可以不加headers,直接属性contentType
success:function (e) {
console.log("111");
}
})
})
,虽然这个post请求成功,但在下百思不得其解,之前的项目都没有这个问题,于是上网查了查,发现@RequestBoby这个请求一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。
也就是说这个注解与jquery默认都contentType不符合,这个时候我尝试将(@Request Object object)的@RequestBody注解去掉,改成了(Object obj),
然后使用jquery默认的post请求,即:`$.post(url,data,function)`,请求成功。
由于本人一直的项目是前后端分离,前端项目做的少,遇到这个问题,自己琢磨了几个小时,分享出来,希望对大家有帮助
网友评论