ajax发送 put和delete请求
AJAX发送 PUT和DELETE请求(转载)
ajax使用restful服务发送put 和 delete 请求时直接传参会出现问题
一,采用POST + _method:delete/put + filter 的方法
ajax发送put 和 delete 请求时,需要传递参数,如果参数在url地址栏上,则可以正常使用,
如果在 data:中需要传递参数,(浏览器会使用表单提交的方式进行提交) 则需要注意此时应作如下修改:
1. 请求方式设置为 type:"post",
2. 在data中加入 __method:"DELETE",或者 _method:"PUT" 参数 ,
data:{_method:"DELETE", id:issueId,userId:userId},
3.后台的controller 仍为对应的DELETE 请求
@RequestMapping(value="/answer/{answerId}",method=RequestMethod.DELETE)
public ResponseResult deleteAnswer(@PathVariable("answerId")int answerId,Issue issue){
//可自动封装成对象时,可直接采用对象参数
}
4.需要配置相应的filter(如果使用Spring Boot 则会自动配置)
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<!-- 备注,这边的名称必须和配置'springmvc'的servlet名称一样 -->
<servlet-name>springmvc</servlet-name>
</filter-mapping>
ajax代码如下 :
var r=confirm("确认删除该?");
if(r){
$.ajax({
url:"http://localhost:8888/answer/"+answerId,
type:"POST",
data:{_method:"DELETE", id:issueId,userId:userId},
dataType:"json",
success:function(result){
}
},
});
二,仍然使用PUT DELETE 请求
1.仍然使用put和delete请求,并且需要传递参数的时候data需要设置为json字符串
var jsonstr = {"id":issueId,"userId":userId};
var r=confirm("确认删除该回答?");
if(r){
$.ajax({
url:"http://localhost:8885/answer/"+answerId,
type:"DELETE",
contentType:"application/json",//设置请求参数类型为json字符串
data:JSON.stringify(jsonstr),//将json对象转换成json字符串发送
dataType:"json",
success:function(result){
},
});
}
2.客户端需要使用@RequestBody标注
@RequestMapping(value="/answer/{answerId}",method=RequestMethod.DELETE)
public ResponseResult deleteAnswer(@PathVariable("answerId")int answerId,@RequestBody Issue issue){
}
3.最后如果前端报错 提示 Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response , 可参考如下解决方案
可以写一个过滤器
@WebFilter(servletNames={"dispatcherServlet"})//可配置对应的请求servlet 此处使用 springMVC
public class AjaxFilter implements Filter{
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse httpServletResponse=(HttpServletResponse) response;
httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
httpServletResponse.setHeader("Access-Control-Allow-Methods","GET,POST,DELETE,PUT");
httpServletResponse.setHeader("Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept");
chain.doFilter(request, response);
}
}
ajax发送 put和delete请求的更多相关文章
- 【转】AJAX发送 PUT和DELETE请求注意事项
jax使用restful服务发送put 和 delete 请求时直接传参会出现问题 一,采用POST + _method:delete/put + filter 的方法ajax发送put 和 de ...
- AJAX发送 PUT和DELETE请求参数传递注意点,了解一下
ajax发送put 和 delete 请求时,需要传递参数,如果参数在url地址栏上,则可以正常使用, 如果在 data:中需要传递参数,(浏览器会使用表单提交的方式进行提交) 则需要注意此时应作如下 ...
- 通过 Ajax 发送 PUT、DELETE 请求的两种实现方式
一.普通请求方法发送 PUT 请求 1. 如果不用 ajax 发送 PUT,我们可以通过设置一个隐藏域设置 _method 的值,如下: <form action="/emps&quo ...
- 解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容
解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容 解决方案 在 Web.xml文件中 加入以下代码 <!--解决ajax Put与Del请求无法接收到传输的内容-- ...
- springboot——发送put、delete请求
在springmvc中我们要发送put和delete请求,需要先配置一个过滤器HiddenHttpMethodFilter,而springboot中,已经帮我们自动配置了,所以我们可以不用配置这个过滤 ...
- 资料汇总--Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)【转】
开发环境:Tomcat9.0 在使用Ajax实现Restful的时候,有时候会出现无法Put.Delete请求参数无法传递到程序中的尴尬情况,此时我们可以有两种解决方案:1.使用地址重写的方法传递参数 ...
- Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)
本文装载自:http://blog.csdn.net/u012737182/article/details/52831008 感谢原文作者分享 开发环境:Tomcat9.0 在使用Ajax实现R ...
- springmvc 发送PUT 和 DELETE 请求
一: 发送 DELETE 或者 PUT 请求: 1.在表单中加入一个隐藏的参数: _method , 值是 DELETE (或者PUT) <form action="springmv ...
- C#发送POST,GET,DELETE请求API,并接受返回值
发送POST请求 /// <summary> /// API发送POST请求 /// </summary> /// <param name="url" ...
- Ajax发送GET和POST请求案例
使用ajax实现菜单联动 通常情况下,GET请求用于从服务器上获取数据,POST请求用于向服务器发送数据. 需求:选择第一个下拉框的值,根据第一个下拉框的值显示第二个下拉框的值 首先使用GET方式. ...
随机推荐
- linux的一些常用端口
hdfs:9870 yarn:8088 sparkMaster的端口是:8080 worker的端口是:8081 历史服务器的默认端口是: 18080
- 关于SpringCloud Bus RemoteApplicationEvent 使用注意事项
最近使用SpringCloud Bus 用于服务直接消息通信,遇到一些问题,记录下来给一样碰到问题的你一个解决方案 开发环境 : springboot 2.3.9.RELEASE spring-clo ...
- DASCTF2022.07赋能赛PWN部分WP
DASCTF2022.07赋能赛PWN部分WP eyfor 程序保护情况 64位ida逆向 可以看见是一个随机数的逻辑,只要我们猜不对4次就可以进入漏洞函数,但是我感觉这原本可能是==号,让用随机数的 ...
- SmolLM: 一个超快速、超高性能的小模型集合
简介 本文将介绍 SmolLM.它集合了一系列最尖端的 135M.360M.1.7B 参数量的小模型,这些模型均在一个全新的高质量数据集上训练.本文将介绍数据整理.模型评测.使用方法等相关过程. 引言 ...
- NVIDIA Omniverse Audio2Face的安装
下载 NVIDIA Omniverse 并运行安装程序 - 安装后,打开 Omniverse Launcher - 在"Apps"(应用)部分中找到 Omniverse Audio ...
- 强化学习中atari游戏环境下帧的预处理操作
在网上找到一个Rainbow算法的代码(https://gitee.com/devilmaycry812839668/Rainbow),在里面找到了atari游戏环境下帧的预处理操作. 具体代码地址: ...
- CCF A类会议 —— AAAI2022 论文审稿模板
======================================================= 前段时间为实验室负责审理AAAI 2022的会议稿件,感觉这个审稿模板还是不错的,这里保 ...
- TensorFlow和pytorch中的pin_memory和non_blocking设置是做什么的,又是否有用???(续2)
接前文: TensorFlow和pytorch中的pin_memory和non_blocking设置是做什么的,又是否有用??? TensorFlow和pytorch中的pin_memory和non_ ...
- 升级JDK时涉及的工作任务
JDK版本升级,通常引入新的语言特性.新的API,废弃一些API,从而导致一些不兼容的现象. 因此在升级产品使用的JDK版本时,通常有如下考虑: 新产品包括新建设的项目以及刚启动不久的项目,使用高版本 ...
- Go 链路追踪入门 Opentelemetry
前言 Opentelemetry 分布式链路跟踪( Distributed Tracing )的概念最早是由 Google 提出来的,发展至今技术已经比较成熟,也是有一些协议标准可以参考.目前在 Tr ...