今天在使用layui框架的时候,报了这么一个错误Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported。写篇博客来记录一下。同时也能够帮助我
彻底了解@RequeseParam和@RequestBody两个注解的使用。
首先为什么会报这个错?
前后端数据交互出现的json类型不符合。前端页面指定的json格式和后端接收的json格式不一样。
这是我原来写的使用ajax发送请求的js代码。
$.ajax({
url: '/recruit/company/add',
type: 'post',
data: JSON.stringify(data.field),
dataType: 'json',
success: function (data) {
if (data.code==1){
alert("操作成功")
}else{
alert("操作失败")
}
}
})
这是后端代码。
@RequestMapping("/add")
@ResponseBody
public DataVO add(@RequestBody Company company){
DataVO dataVO= companyService.addCompany(company);
return dataVO;
}
当我提交表单之后,就报了上述错误。在这里其实有两种处理方式。一种是将 前端页面的数据类型改为application/json
另外一种方式是使用@Requestparam注解,而不是使用@Requestbody注解。
具体详情解析
json分为两种类型
(1) json 对象类型,即前端定义的Content type 为 application/x-www-form-urlencoded等
(2) json字符串类型,即前端定义的Content type 为 application/json
当前端定义为 application/x-www-form-urlencoded 时我们使用@RequestParam注解来接收参数。
当前段定义为 application/json 时,我们使用@Requestbody注解来接收参数