$.ajax({})
设置contentType
参数值为 'application/x-www-form-urlencoded;charset=UTF-8'
(不设置contentType参数值也是这种也是这中情况)
- 发送GET、POST请求只需要设置
type
参数值为对应的'get'
、'post'
即可。 - 发送DELETE、PUT请求时
- 先需要在web.xml配置文件中添加一个将post请求转换为delete或put请求的filter,代码见下方
- 前端
$.ajax({})
中设置type
参数值为'post'
,然后在请求参数中加一个参数,参数键是_method
,参数值是'delete'
或'put'
以发DELETE请求为例,前端代码:
$.ajax({
type : 'post',
data : {'_method':'delete','dbId':node.dbId,'schemaName':node.schemaName,'date':new Date()},
dataType : 'json',
url : '${ctp}/IndexOperate/Index/1',
success : function(data,textStatus,jqXHR){
console.log(data);
}
});
后端处理器代码:
@RequestMapping(value="/Index/{indexId}",method=RequestMethod.DELETE)
@ResponseBody
public int delIndex(@PathVariable(value="indexId")int indexId,
@RequestParam(value="dbId")int dbId,
@RequestParam(value="schemaName",required=false)String schemaName) {
int result = indexService.deleteIndexById(indexId,dbId,schemaName);
return result;
}
将post请求转换为delete或者put请求的filter
<!-- 将post请求转换为delete或者put请求 -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>springDispatcherServlet</servlet-name>
</filter-mapping>
注意:
在此情况下,若前端$.ajax({})
中设置type
参数值为 'delete'
,请求会到达后端对应的处理器方法,但是接收的参数会为null,具体情况见我的另一篇文章:发送DELETE或PUT请求时springmvc获取参数为NULL
$.ajax({})
设置contentType
参数值为 'application/json;charset=UTF-8'
此种情况一般发生在将请求参数以json数据的形式发送到后台,发送GET、POST、DELETE、PUT请求只需要设置 type
参数值为对应的 'get'
、'post'
、'delete'
、'put'
即可。
以发送delete请求为例,前端代码:
$.ajax({
type : 'delete',
data : JSON.stringify(recordInfo),
url : '${ctp}/TableOperate/UserTableRecord',
contentType : 'application/json;charset=UTF-8',
dataType : 'json',
success : function(data,textStatus,jqXHR){
console.log(data);
}
});
后端处理器代码:
@RequestMapping(value="/UserTableRecord",method=RequestMethod.POST)
@ResponseBody
public List<Message> batchAddRecord(@RequestBody Map<String,Object> recordInfo) {
System.out.println(recordInfo);
List<Message> msgs = new ArrayList<>();
return msgs;
}