AJAX发送GET、POST、DELETE、PUT请求到服务器

$.ajax({})设置contentType参数值为 'application/x-www-form-urlencoded;charset=UTF-8'(不设置contentType参数值也是这种也是这中情况)

  • 发送GET、POST请求只需要设置 type 参数值为对应的 'get''post'即可。
  • 发送DELETE、PUT请求时
    1. 先需要在web.xml配置文件中添加一个将post请求转换为delete或put请求的filter,代码见下方
    2. 前端$.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;
}
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值