AJAX发送 PUT和DELETE请求(转载)

 
 转自:https://blog.csdn.net/liuyuanjiang109/article/details/78972644

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 , 可参考如下解决方案

https://stackoverflow.com/questions/12409600/error-request-header-field-content-type-is-not-allowed-by-access-control-allow

可以写一个过滤器

@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请求的更多相关文章

  1. 【转】AJAX发送 PUT和DELETE请求注意事项

    jax使用restful服务发送put 和 delete 请求时直接传参会出现问题 一,采用POST  + _method:delete/put  + filter 的方法ajax发送put 和 de ...

  2. AJAX发送 PUT和DELETE请求参数传递注意点,了解一下

    ajax发送put 和 delete 请求时,需要传递参数,如果参数在url地址栏上,则可以正常使用, 如果在 data:中需要传递参数,(浏览器会使用表单提交的方式进行提交) 则需要注意此时应作如下 ...

  3. 通过 Ajax 发送 PUT、DELETE 请求的两种实现方式

    一.普通请求方法发送 PUT 请求 1. 如果不用 ajax 发送 PUT,我们可以通过设置一个隐藏域设置 _method 的值,如下: <form action="/emps&quo ...

  4. 解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容

    解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容 解决方案 在 Web.xml文件中 加入以下代码 <!--解决ajax Put与Del请求无法接收到传输的内容-- ...

  5. springboot——发送put、delete请求

    在springmvc中我们要发送put和delete请求,需要先配置一个过滤器HiddenHttpMethodFilter,而springboot中,已经帮我们自动配置了,所以我们可以不用配置这个过滤 ...

  6. 资料汇总--Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)【转】

    开发环境:Tomcat9.0 在使用Ajax实现Restful的时候,有时候会出现无法Put.Delete请求参数无法传递到程序中的尴尬情况,此时我们可以有两种解决方案:1.使用地址重写的方法传递参数 ...

  7. Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)

    本文装载自:http://blog.csdn.net/u012737182/article/details/52831008    感谢原文作者分享 开发环境:Tomcat9.0 在使用Ajax实现R ...

  8. springmvc 发送PUT 和 DELETE 请求

    一: 发送 DELETE 或者 PUT 请求: 1.在表单中加入一个隐藏的参数: _method  , 值是 DELETE (或者PUT) <form action="springmv ...

  9. C#发送POST,GET,DELETE请求API,并接受返回值

    发送POST请求 /// <summary> /// API发送POST请求 /// </summary> /// <param name="url" ...

  10. Ajax发送GET和POST请求案例

    使用ajax实现菜单联动 通常情况下,GET请求用于从服务器上获取数据,POST请求用于向服务器发送数据. 需求:选择第一个下拉框的值,根据第一个下拉框的值显示第二个下拉框的值 首先使用GET方式. ...

随机推荐

  1. 记一次NACOS开放公网访问导致服务器被挖矿的解决流程 [kdcflush] acosd

    前言 事情的起因是这样的,昨天领导找到我说服务器内存满了,影响其他程序正常运行了,让我把测试服务器上之前启动的六个JAVA程序停一下,接着我就登上服务器执行docker compose down把服务 ...

  2. 简单认识APP项目

    manifests:里面只有一个xml,是app运行配置文件 清单文件 <?xml version="1.0" encoding="utf-8"?> ...

  3. 模型推理batch inference速度无明显提升、耗时线性增长问题排查

    模型推理batch inference速度无明显提升.耗时线性增长问题排查 现象描述 当模型在推理阶段使用batch inference时,推理速度并无明显提升,相比单帧多次推理收益不大.如笔者在Xa ...

  4. Fiddler使用界面介绍-右侧面板

    右侧面板是对左侧请求进行解析的面板,点击左侧的请求右侧面板就会出现分析数据 1.Statistics关于HTTP请求的性能 2.Inspectors请求内容,包含请求数据和响应数据 3. AutoRe ...

  5. 遗传算法和神经网络融合算法:GA-BP算法流程图

    相关: https://d.wanfangdata.com.cn/periodical/sxgcxb202109004

  6. 如何使用二阶优化算法实现对神经网络的优化 —— 分布式计算的近似二阶优化算法实现对神经网络的优化 —— 《Distributed Hessian-Free Optimization for Deep Neural Network》

    论文: <Distributed Hessian-Free Optimization for Deep Neural Network> 地址: https://arxiv.org/abs/ ...

  7. nvtop —— GPU使用情况的可视化工具

    安装: sudo apt install nvtop

  8. 【转载】 CUDA中的Unified Memory

    为了结合上篇 文章   https://www.cnblogs.com/devilmaycry812839668/p/13264080.html 对RTX显卡是否能够实现P2P通信功能,同时专业级别显 ...

  9. 报错 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found

    参考: https://blog.csdn.net/qq_39938666/article/details/120452028 ==================================== ...

  10. 如何对MIL-STD-1553B进行选型

    MIL-STD-1553B产品选型是一个复杂而细致的过程,‌需要综合考虑多个因素以确保所选产品能够满足特定应用场景的需求. 一.‌引言 MIL-STD-1553B作为一种广泛应用于航空航天领域的数据总 ...