Spring MVC 中使用ajax发送POST请求时的参数问题
来源:互联网 发布:软件编程自学网站 编辑:程序博客网 时间:2024/04/26 04:20
Spring MVC提供了丰富的数据转换的Converter类,供前台与后台交互时进行数据自动转换(包装)
此时可以直接将数据组装成规范的JSON对象传递,前台后台不用做任何处理
controller:
具体Converter类:http://www.cnblogs.com/zivxiaowei/p/3459606.html(MappingJacksonHttpMessageConverter为Spring MVC 4.0之前版本的类)
在具体代码中,只需要在配置文件中添加
<mvc:annotation-driven />
Spring MVC将为我们自动装配基本所有的Converter自动转换类。
使用Ajax 向后台发送请求时,经常会遇到各种参数错误问题。这里主要讲传JSON 形式的参数
1、当传递的对象不包含列表和哈希表属性时
如:
public class User { private String userName; private String password; private String email;}
此时可以直接将数据组装成规范的JSON对象传递,前台后台不用做任何处理
js代码:
$("#ajaxSubmit2").click(function(){ var user = { userName: "lily", password: "345", email: "345@qq.com" }; $.ajax({ url: "../methodParam/ajaxSubmit2", type: 'POST', dataType: 'json', data: user, success: function(data) { alert(data.userName); } });
controller:
@RequestMapping(value = "ajaxSubmit2", method = RequestMethod.POST)@ResponseBodypublic UserDTO ajaxSubmit2(UserDTO user) { System.out.println(user.getUserName()); return user;}
此时请求中的参数存放在Form data中
POJO类:
public class Project { private String name; private User[] users;}JS数据:
var users = [ { "userName": "tom", "password": "123", "email": "123@qq.com" }, { "userName": "jack", "password": "234", "email": "234@qq.com" }, { "userName": "lily", "password": "345", "email": "345@qq.com" } ];var project = {"project.name": "DMP", "project.users": users};此时无法用1中的方法进行参数传递,需要将对象转成JSON格式的字符串
js代码:
$.ajax({ url: "../methodParam/ajaxSubmit", type: 'POST', contentType: "application/json", dataType: 'json', data: JSON.stringify(project), success: function(data) { alert(data.name); }});其中contentType和JSON.stringify是必须的,后台根据contentType进行判断用哪种转换器进行数据转换
后台Controller必须添加RequestBody注解
@RequestMapping(value = "ajaxSubmit", method = RequestMethod.POST)@ResponseBodypublic User ajaxSubmit(@RequestBody ProjectDTO project) { System.out.println(project.getUsers()[0].getUserName()); User user = new User(); user.setName(project.getUsers()[0].getUserName()); return user;}此时request中的数据存放在request payload中
注:JSON数组也用此方式
另外,在项目中遇到的不规范的数据格式写法的整理
1、传递user对象
$("#formAjaxSubmit").click(function(){ var data = {}; data['user["userName"]'] = "tomtom"; data['user["password"]'] = "123"; data['user["email"]'] = "123@qq.com"; $.ajax({ url: "../user/formAjaxSubmit", type: 'POST', dataType: 'json', data: data, success: function(data) { alert(data); } }); });2、传递project对象
$("#arrayAjaxSubmit").click(function(){ var data = {}; data['users[0].userName'] = "tom"; data['users[0].password'] = "123"; data['users[0].email'] = "123@qq"; data['users[1].userName'] = "lily"; data['users[1].password'] = "234"; data['users[1].email'] = "234@qq"; data['name'] = "DMP"; $.ajax({ url: "../methodParam/arrayAjaxSubmit", type: 'POST', dataType: 'json', data: data, success: function(data) { alert(data.userName); } }); });后台不用添加任何注解
0 0
- Spring MVC 中使用ajax发送POST请求时的参数问题
- Spring Mvc+ajax发送请求参数接收问题
- spring MVC 中AJAX 请求 get 与 post
- 【Spring】详解Spring MVC中不同格式的POST请求参数的数据类型转换过程
- Extjs ajax同步请求时post方式参数发送方式
- 在jquery.ajax()的回调函数中使用发送请求时的data中的参数
- MVC中$.ajax的post问题
- spring-mvc ajax post请求乱码
- spring mvc post请求参数所放的位置
- Spring MVC后台接收不到POST请求的参数
- Spring MVC后台接收不到POST请求的参数
- Spring MVC的Post请求参数中文乱码解决方法
- Extjs的ajax同步请求时post方式参数发送方式
- Spring MVC无法获取ajax POST的参数和值
- 【spring mvc】PUT/POST 请求参数接收
- spring MVC接收ajax post提交参数
- Android使用volley发送带参数的post请求
- springMVC发送POST请求时接收不到参数问题
- 全面解析css定位属性position(主要是relative以及absolute)
- Linux 下编译hello world 的C 语言程序
- 《技术骨干到项目经理的成功转型》- 大型免费讲座
- 如何使用C来扩展python功能。
- KMP算法的代码实现一
- Spring MVC 中使用ajax发送POST请求时的参数问题
- IOS获取系统通讯录使用权限的优雅方式
- iOS带有勾选框的提示框(封装代码)
- Android Launcher分析和修改4——初始化加载数据
- C# Activex开发、打包、签名、发布(转)
- Path Sum (leetcode)
- IOS7 8中tableview分割线缺少15像素
- Android内存使用——垃圾回收LOG,GC_CONCURRENT等的意义的说明(有用)
- AssetBundle杂谈