记录一次“Ajax向Java后端发送数据,后端使用注解接收请求参数”需求实现过程
需求
想要在后端接收前端传递的参数,有的参数需要放在请求头(如分页的参数,pageNum和pageSize),有的参数需要放在请求头体中(如查询参数,searchMap)
前端
let searchMap = {
"pageNum": "1",
"pageSize": "5",
"townCode": "townCode",
"firstClassCode": "firstClassCode",
"secondClassCode": "secondClassCode"
}
$.ajax({
url: '/riskWarning/search/?pageNum=' + pageNum + '&pageSize=' + pageSize,
data:JSON.stringify(searchMap),
type: 'POST',
dataType: 'json',
contentType: "application/json",
success: function (res) {
console.log("成功")
}
})
pageNum
和pageSize
放在请求头,因此,直接放在url中。
-
data:JSON.stringify(searchMap)
searchMap需要放在请求体里。因此,使用JSON.stringify()将JSON对象转为JSON字符串,使用
contentType
指定传递的参数格式为jSON,因此设置为"application/json"
-
dataType
指定接收服务器的JSON数据
后端
@ResponseBody
@RequestMapping(value = "/search/",method = RequestMethod.POST)
public RespBean search(@RequestParam(value = "pageNum",defaultValue = "1")Integer pageNum,@RequestParam(value = "pageSize",defaultValue = "5")Integer pageSize,@RequestBody Map<String,Object> searchMap){
System.out.println(searchMap);
return riskWarningService.search(1,5,null);
}
RequestParam
:从请求头中获取参数,pageNum
和pageSize
RequestBody
:从请求头中获取参数,searchMap
使用以上代码,后端可以正确接收到前端传递的参数。