使用ajax发送json数据到SpringMVC后台问题
**from_data.field为form表单对象 **
情况一 :使用@RequestBody
前端ajax:
$.ajax({
url:"${pageContext.request.contextPath}/validate",
type: "POST",
<!-- from_data.field为form表单对象 -->
<!-- 如果指定了 contentType 为json数据,需要把from_data.field转换为字符串-->
data:JSON.stringify(from_data.field),
contentType: "application/json;charset=UTF-8",
success: function (data) {
alter("成功");
},//响应成功后的回调函数
error: function (data) {
alter("调用接口失败");
}
})
java代码
@RequestMapping("/validate")
@ResponseBody
public String validate(@RequestBody Admin admin){
System.out.println(admin);
return "0";
}
总结:@RequestBody 接收的为json的字符串
情况二 :使用直接使用实体类接收
前端ajax:
$.ajax({
url:"${pageContext.request.contextPath}/validate",
type: "POST",
<!-- from_data.field为form表单对象 -->
<!-- 没有指定 contentType 属性,直接from_data.field对象-->
data:from_data.field,
<!-- contentType: "application/json;charset=UTF-8",-->
success: function (data) {
alter("成功");
},//响应成功后的回调函数
error: function (data) {
alter("调用接口失败");
}
})
java代码
@RequestMapping("/validate")
@ResponseBody
public String validate(Admin admin){
System.out.println(admin);
return "0";
}
总结:前端发送对象,后端也使用对象接收
当后台添加@RequestBody,前端发送对象时,会出现由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求的错误,所以两种情况要对应。