服务端代码
@ResponseBody
@RequestMapping(value = "/userAdd.json")
public Map<String,String> userAdd(@RequestBody UserInfo userInfo) {
Map<String, String> result = new HashMap<String, String>();
result.put("resultCode","0001");
return result;
}
前端代码(错误代码)
var requestMethod = 'post';
var variable = $("form").serialize();
$.ajax({
url : 'UserController/userAdd.json',
type: requestMethod,
async: false,
data : variable,
dataType: 'json',
success : function(data){
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
console.log(errorThrown.responseText);
}
});
前端代码(正确代码)
var requestMethod = 'post';
var variable = JSON.stringify(data.field);
$.ajax({
url : 'UserController/userAdd.json',
type: requestMethod,
async: false,
data : variable,
dataType: 'json',
contentType: 'application/json;charset=UTF-8',
success : function(data){
console.log(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
console.log(errorThrown.responseText);
}
});
当服务端方法参数使用了@RequestBody
时:
1、前端参数需要是json
字符串
2、请求方式为post
3、客户端发送数据格式为application/json
4、服务端方法参数需使用对象接收(即使前端只有一个参数)
5、前端所有参数需都放入json
字符串中,不允许有多种格式存在
表单序列化
title=gonzo&password=gonzo&city=2&sex=%E5%A5%B3&desc=
json
字符串
{"title":"gonzo","password":"gonzo","city":"2","sex":"女","desc":""}
2019-04-12 补充
前端代码(正确代码) 中第二行的data.field
是项目中取表单数据的写法,其数据格式如下
var data = new Object();
var field = {};
field.title="gonzo";
field.password="gonzo";
field.city="2";
field.sex="女";
field.desc="";
data.field = field;