不过犯错是一件好事,有助于总结。
1.关于参数前加@RequestBody
如果是使用ajax交互时,必须要加上这个contentType: 'application/json;charset=utf-8'
否则会出现这个异常:
错误信息:org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
不支持这种类型传递,是因为没有在前台进行定义,说明传递的内容必须为json。有些时候特别后台以@RequestBody作为传参时,必须在ajax中加上contentType: 'application/json;charset=utf-8',加上这个意味着你已经将传递的对象定义为json类型,@RequestBody也仅仅支持json类型。所以就很容易理解这个错误的发生原因。特别是我们开发者大军们,其中不乏有这样的人,对于从来没遇到的错误,复制粘贴到百度去搜索,通常前人们遇到过,通过博客的形式记录下来错误信息及其如何解决,及其为什么会发生。但是我们有些朋友只看如何解决,至于为什么会发生从来就不管。
错误信息:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'email': was expecting ('true','false' or 'null'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'email': was expecting ('true','false' or 'null')
这个错误是因为你定义的json对象参数没有写全导致,同时导致这种错误还有就是对于后台以@RequestBody接收参数,必须在ajax中的data对应值中写上JSON.stringify
示例:
这样写就是对的,就不会发生上述的错误
$.ajax({
url:"/blog-web/user/register",type:"POST",contentType: 'application/json;charset=utf-8',data : JSON.stringify(data),dataType : 'json',success:function(data){
if(data.returnCode=="333333"){
layui.use('layer',function(){
var layer = layui.layer;
layer.alert(data.returnMsg,{icon: 5});
});
}else if(data.returnCode=="222222"){
layui.use('layer',function(){
var layer = layui.layer;
layer.alert(data.returnMsg,{icon: 5});
});
}else if(data.returnCode=="111111"){
layui.use('layer',{icon: 5});
});
}else if(data.returnCode=="000000"){
layui.use('layer',function(){
var layer = layui.layer;
layer.alert("请稍后,马上进入"+data.returnMsg,{icon: 1});
});
setTimeout(() => {
view();
},10000);
}
},error:function(){
layui.use('layer',function(){
var layer = layui.layer;
layer.alert("有异常,请和管理员联系");
});
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。