• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >AJAX > 发送DELETE或PUT请求时springmvc获取参数为NULL

发送DELETE或PUT请求时springmvc获取参数为NULL

作者: 字体:[增加 减小] 来源:互联网 时间:2017-12-27

通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1. 情况描述:使用 $.aiax({}); 发送delete和put请求时,springmvc获取到的请求参数一直为null。

 

2.后台代码如下,可正常接受POST请求参数。

 

@RequestMapping(value="/Database/{id}",method=RequestMethod.DELETE)
@ResponseBody
public String deleteDatabase(@PathVariable(name="id",required=true)Integer id,
			@RequestParam(value="name",required=false) String name,
			@RequestParam(value="age",required=false) Integer age
) {
	System.out.println(id+"--"+name+"--"+age);
		
	String result = "0";
		
	return result;
}

 

 

3. 有问题的前端js代码 :

 

$.ajax({
	url : "${ctp}/DatabaseOperate/Database/"+node.id,
	type : "delete",
	data : {"name":"mercy","age":22},
	dataType : "json",
	success : function(data){
		console.log(data);
	}
});

在上述代码情况下,id可以正常获取到,但name和age一直是null。用chrome监听请求,请求方式确实是DELETE,也携带了请求参数(Form Data形式),但后台获取的name和age就是null。

 

 

4. 原因:当在$.aiax({});直接设置type为delete或put时,请求会到达springmvc控制器,但是无法获取传过来的参数。

解决方式:将post请求转换为delete或put请求,这样后台就可以正常获取到传过来的请求参数。

① 在web.xml配置文件中添加一个将post请求转换为delete或put请求的filter:

<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>

注意:servlet-name中的值必须时springmvc的对应的servlet名称

 

② AJAX请求参数中必须带上如下键值对:_method=delete/put

 

data : {"_method":"delete","name":"mercy","age":22}

③ AJAX请求类型必须是POST

type : "post"

 

 

5.正确完整前端代码

 

$.ajax({
	url : "${ctp}/DatabaseOperate/Database/"+node.id,
	type : "post",
	data : {"_method":"delete","name":"mercy","age":22},
	dataType : "json",
	success : function(data){
		console.log(data);
		layer.msg("删除成功!");
	}
});

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11使用Ajax时处理用户session失效问题的解决方法
  • 2017-05-11多ajax请求的各类解决方案(同步, 队列, cancel请求)
  • 2017-05-11IE9下Ajax无法刷新数据的缓存问题解决方法
  • 2017-05-11ajax下载smartupload的内容无法显示汉字的解决方法
  • 2017-05-11ajaxForm和ajaxSubmit 粘贴就可用示例代码
  • 2017-05-11AJAXCALL
  • 2017-05-11AJAX 随记
  • 2017-05-11Ajax技术组成与核心原理分析
  • 2017-05-11IE6中ajax aborted错误请求中断解决方法
  • 2017-05-11解决ajax跨域请求数据cookie丢失问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ajax 同步和异步XMLHTTP代码分析
    • ajax方式实现注册功能(提交数据到后台数据库完成交互)
    • 有关Ajax中get和post的使用问题
    • ajax请求json数据案例详解
    • IE7下ajax之open Method New的说明
    • AJAX初体验之上手篇
    • Ajax叠加(Ajax返回数据用Ajax发出)示例代码
    • 国内首发 -- ajax完整功能框架
    • 一句话解决AJAX中文乱码问题[推荐]
    • jQuery+Ajax+PHP实现“喜欢”评级功能附源码下载

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有