ajax发送put/delete请求时出现错误的原因和解决方案

2023-05-16

https://www.cnblogs.com/roobtyan/p/9576685.html

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){
    	
    		},
    			
       });
    }

客户端需要使用@RequestBody标注

    @RequestMapping(value="/answer/{answerId}",method=RequestMethod.DELETE)
    public ResponseResult deleteAnswer(@PathVariable("answerId")int answerId,@RequestBody Issue issue){
        
    }

最后如果前端报错 提示 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);      

原文链接:https://blog.csdn.net/liuyuanjiang109/article/details/78972644

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ajax发送put/delete请求时出现错误的原因和解决方案 的相关文章

  • 从单个 javascript 函数向两个不同的 PHP 脚本发送两个 Ajax 请求

    是否可以同时向两个或多个 Php 脚本发送 Ajax 请求 我知道这可以串行实现 从 1 获取响应 然后从另一个获取响应 但我想知道是否可以同时实现 请协助我使用以下代码 function calShowUpload if http rea
  • 如何将 STRUCT - OR - JSON 传递给 Coldfusion CFC 方法

    我有一个现有的 CFC 在将结构传递到方法中时可以正常工作 问题是 我们现在还需要通过 JSON 将数据传递到同一函数中 这是 CFC 片段
  • ASP.Net MVC AJAX 链接不起作用

    为了实现 AJAX 登录 我在我的页面上有这个链接 附近有一个 id 为 lll 的 div 当我单击该链接时 我得到了无聊的确认 只是出于调试目的而添加 没有它的行为是相同的 但然后什么也没有发生 没有请求到达服务器 因为我在 LogOn
  • Rails 4 使用 ajax、jquery、:remote => true 和 respond_to 渲染部分

    使用 AJAX 动态渲染页面以响应提交的表单似乎很常见 其他类似的问题都没有集中于如何以一般方式做到这一点 我能找到的关于这个主题的最好的博客文章在这里 http www gotealeaf com blog the detailed gu
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • 如何使用 javascript/jquery/AJAX 调用 Django REST API?

    我想使用 Javascript jQuery AJAX 在前端调用 Django Rest API 请求方法是 POST 但当我看到 API 调用它的调用 OPTIONS 方法时 所以 我开始了解access control allow o
  • 当复选框条件更改时,如何使用ajax更新mysql数据库?

    我有一个在客户端按行显示的文章表 每篇文章都有一个唯一的 ID 并包含一个复选框以指示该文章是否被选中为收藏夹 如果它是最喜欢的 则该复选框已被选中 如果没有 则未选中 现在 如果特定于每一行的复选框条件发生变化 我需要 js 或 jque
  • CckEditor - 从 AJAX 加载的模板

    我正在使用 CkEditor 并且想要定义一个自定义模板 该模板使用 AJAX 函数来加载 HTML 字符串 我已经能够定义自定义模板 但如果我对模板对象的 html 属性使用函数 则该函数永远不会执行 是否可以使用 AJAX 和默认模板插
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • Ajax - 限制列表的加载,然后在滚动上加载其余部分

    我有一家商店 在一个页面上显示某个类别的所有产品 这是店主喜欢的方式 因此不能选择分页 为了缩短某些重类别的加载时间 我希望实现一个可以加载许多产品的脚本 li s然后在页面滚动上加载另一组 页面就是用这个结构生成的 div ul clas
  • JQuery:将 FormData 和 csrf 令牌一起发布

    Is the data 下面的行正确吗 我想将表单数据和 csrf 令牌发布到 Django 视图函数 file upload on change function var currentpath window location pathn
  • 如何使用 jquery ajax 将锚点的值发送到 php

    我正在尝试使用 jquery 将几个锚点的值发送到 php 文件 但我没有从 php 脚本中得到回调 div class result div a href value class star Star 5 a a href value cl
  • 如何在Jquery-Select2中设置多值选择中的选定值?

    我正在绑定我的下拉菜单Jquery Select2 它工作正常 但现在我需要绑定我的多值selectBox通过使用Jquery Select2 我的下拉菜单 div class divright div
  • 在 ajax 完成之前阻止提交

    我正在使用 jQuery 并且我希望在所有 ajax 调用完成之前表单提交不会起作用 我想到的一种方法是存储一个布尔值 该值指示是否有 ajax 请求正在进行 在每一个结束时它都会被设置为 false 我不确定这是否是最好的方法 所以我将不
  • 在学习 Ajax 之前我应该​​先学习 Xml 和 Javascript 吗?

    A 由于 Ajax 是基于 Javascript 和 Xml 的 我应该在学习 Ajax 之前学习 Xml 和 Javascript 吗 B 即使了解 Javascript 和 Xml 不是必须的 如果我了解 Javascript 和 Xm
  • 使用他们的 API 创建一个基本的 MailChimp 注册表单

    我是 MailChimp 的新手 需要一些帮助 通过他们的基本时事通讯注册表单 您只需将一些预先打包的 HTML 嵌入到您的页面中即可 然而 这样做的问题是 单击 提交 会重定向到 MailChimp 页面 我不想重定向到 MailChim
  • 未捕获的类型错误:未定义不是函数

    我收到消息Uncaught TypeError Undefined is not a function当我尝试调用家庭控制器中的方法时 也许关于我为什么收到此消息的建议 findIdpActivities function pernr ca
  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希
  • 在 Javascript 中使用 fetch API 接收和处理 JSON

    在我的项目中 当条件不足时 我的 Django 应用程序会发送带有消息的 JSON 响应 我使用这个 JsonResponse 指令 Code data is taken email email return JsonResponse da
  • 使用 JSF 2.0 Ajax 响应访问 bean 函数的返回值?

    我正在使用 JSF 2 0 构建一个调度应用程序 用户可以在其中将项目添加到日历中 然后编辑这些对象 我广泛使用 AJAX 来防止页面刷新 我遇到的问题是从使用 AJAX 调用的函数中获取返回值

随机推荐

  • 关于C++父子类转换问题

    原则 xff1a 父类指针和引用可以指向子类对象 xff0c 而子类对象指针不能直接指向父类 xff0c 但是可以通过强制转换来把父类指针转换为子类指针 子类转父类后能访问的函数是父类非虚函数和子类虚函数 xff0c 父类转子类后能访问到的
  • Windows下安装wsl

    手动下载ubuntu并安装到其他盘 1 从下面这个网址下载压缩包 链接 link 2 解压压缩包 3 打开解压后的文件夹里面的ubuntu exe 如果提示系统找不到指定的路径可以 打开cmd依次输入 便可打开ubuntu exe进行安装
  • Git常见问题

    1 关于本地库和远程库main和master的问题 刚开始使用github和git时 xff0c 你可能会按以下 xff08 错误 xff09 步骤操作 xff1a 创建一个仓库 xff0c 命名 xff0c 描述 xff0c 然后添加RE
  • visual studio 编译项目生成不了pdb文件,无法调试

    解决方法 xff1a 保证项目属性设置了导出调试信息情况下 xff0c 检查此目录下的这个文件是否有改动 还原即可
  • C++ 继承中的内存布局

    今天在网上看到了一篇写得非常好的文章 xff0c 是有关c 43 43 类继承内存布局的 看了之后获益良多 xff0c 现在转在我自己的博客里面 xff0c 作为以后复习之用 谈VC 43 43 对象模型 xff08 美 xff09 简 格
  • iOS录音、播放、WAV以及caf转成MP3上传后台

    录音 播放 转码 录音播放转成MP3base64转码caf转码MP3调用分享心得 xff1a 录音 span class token macro property span class token directive hash span s
  • 关于各类软件常见问题解决方法

    MySQL安装之后会在每天都启动检查更新 xff0c 比如我的是每天的16 00 xff0c 此时它会弹出命令行窗口 解决方案 xff1a 右键计算机 gt 管理 gt 任务计划程序 gt 左侧找到MYSQL文件夹 gt 点击会有一个ins
  • LINUX设置定时执行脚本

    编写shell脚本 例子 xff1a 设置文件权限755 chmod 755 文件名 root创建文件夹为755 xff0c 创建文件为644 设置定时 cd var spool cron crontab l 查看当前定时任务 新增任务保存
  • Python 求问:怎么将多层级嵌套的Json格式的数据文件,自动解析后存入SQL Server的两个表中

    现有一个Data json文件 xff0c 文件中的数据格式如下 xff1a 34 ID 34 70002 34 NAME 34 34 机器学习 34 34 TYPE 34 7 34 ISM 34 false 34 PARAS 34 34
  • ESP07的启动与下载

    目前大多数人都使用ESP12F来进行ESP8266系列的学习 xff0c 但是ESP07模块大小上更小一些 xff0c 可以有效降低开发板的大小 xff08 一 xff09 ESP07的启动 启动基本上和ESP12F相近 其连接图如下所示
  • openwrt无法读U盘和codepage cp437 not found的问题

    在使用openwrt15 05时 xff0c 发现U盘没有出现在 dev sda1 再开启之后还是报codepage cp437 not found的问题 1 修改文件代码 以mt7620a为例 xff0c 修改target linux r
  • Ubuntu 无法联网 解决办法

    ubuntu经常锁屏后连不上网 xff0c 右上角联网图标也会消失 解决办法 xff1a 1 打开终端 xff0c 依次输入命令 sudo service network manager stop sudo gedit var lib Ne
  • 使用you-get下载不同分辨率的视频

    分辨率太高 xff0c 文件太大下载速度太慢 分辨率太低 xff0c 效果太差 怎么办 xff1f 自己决定呗 xff01 方法 you get i URL 出来的提示会告诉你如何下载不同比例不同格式文件拉 61 61 61 61 61 6
  • Rust std library not found(标准库找不到)

    Rust std library not found 标准库找不到 问题描述 xff1a 解决办法 xff1a 问题描述 xff1a 在clion开发环境下 xff0c 找不到标准库资源等于没有代码提示 xff0c 表现就是下面找不到路径
  • linux-新建文件分区作为swap交换空间

    1 sudo fallocate l 1G swapfile 普通创建 sudo dd if 61 dev zero of 61 swapfile bs 61 1024 count 61 1024000 dd创建 xff0c 建议用这种方式
  • adb获取ANDROID_ID、系统属性、查看机型、系统版本、系统api版本、分辨率、设备名称

    获取手机Settings Secure ANDROID ID xff1a adb shell settings get secure android id 系统属性 xff1a adb shell getprop grep product
  • NOIP2017普及组★棋盘

    题目 棋盘 chess cpp c pas 1S20 5 传统256MB 问题描述 有一个m m的棋盘 xff0c 棋盘上每一个格子可能是红色 黄色或没有任何颜色的 你现在 要从棋盘的最左上角走到棋盘的最右下角 任何一个时刻 xff0c 你
  • Ubuntu 20.04 Xrdp 远程桌面黑屏

    1 问题现象 xff1a 通过远程桌面输入账户和密码后 xff0c 进入ubuntu20 04后 xff0c 出现的是黑屏 2 解决办法 xff1a xff08 1 xff09 xff1a 打开startwm sh文件 sudo vim e
  • 【论文阅读】Feedback Network for Image Super-Resolution(SRFBN)

    0问题重述 基于深度学习的超分辨图像的生成问题 之前都没有人引入反馈机制 1摘要 最近图像超分辨SR用深度学习技术获得了很好的表现 但是存在于人类视觉系统的反馈机制 xff0c 没有被用到这些方法中 本文提出了SRFBN xff08 sup
  • ajax发送put/delete请求时出现错误的原因和解决方案

    https www cnblogs com roobtyan p 9576685 html ajax使用restful服务发送put 和 delete 请求时直接传参会出现问题 一 xff0c 采用POST 43 method delete