版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22067469/article/details/84989900
前言
今天在提交Ajax请求的时候出现下面异常
具体异常
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:152)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:178)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:98)
前台代码
$.ajax({
url:"khRyPfGsController.do?saveRows",
type:"post",
data:JSON.stringify(result),
dataType:"json",
success:function(data){
tip(data.msg);
if(data.success){
reloadTable();
}
}
})
后端代码
@RequestMapping(params = "saveRows")
@ResponseBody
public AjaxJson saveRows(@RequestBody List<Map<String, Object>> list) {
//省略
}
解决办法
JS代码加上contentType:"application/json"
即可
$.ajax({
url:"khRyPfGsController.do?saveRows",
type:"post",
data:JSON.stringify(result),
contentType:"application/json",
dataType:"json",
success:function(data){
tip(data.msg);
if(data.success){
reloadTable();
}
}
})
原因
由于后台是使用@RequestBody注解接收参数的,所以在前台就必须指定内容类型。
仅供参考,不一定都试用。
================================================================================