zoukankan      html  css  js  c++  java
  • JQuery Ajax 请求参数 List 集合处理

    引言

    JQuery Ajax 发送请求参数一般都是基本类型,比如 String、int;那么,请求参数如果是 List 集合应该如何处理呢?

    情况一:Aajx 发送 List 类型请求参数

    举例如下:

    前端代码
    //声明list
    var list = [];
    
    //放入string对象
    for (var i = 0; i < 3; i++) {
    	list[i]="tom";
    }
    
    $.ajax({
    	url : 'test',
    	data : "list":list,
    	type : "POST",
    	success : function(data) {
    		alert(data);
    	}
    });
    
    后端代码
    @RequestMapping("test")
    @ResponseBody
    public String ajaxList(List<String> list){
    	for (String str : list) {
    		System.out.println(str);
    	}
    	return "OK";
    }
    

    可以看出,List 类型请求参数与基本类型请求参数没什么区别,无非就是服务器请求参数绑定时类型要写 List

    情况二:Ajax 发送 List 类型请求参数

    这种情况就要麻烦一些了,SpringMVC 无法直接绑定复杂的请求参数类型,需要用到第三方 json 解析工具,比如 jackson 。

    maven 导入 jackson 依赖包

    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-databind</artifactId>
    	<version>2.7.3</version>
    </dependency>
    
    前端代码
    //声明list
    var list = [];
    //创建两个user对象
    var a= {};
    a.name="tom";
    a.age=23;
    a.city="上海";
    var b = {};
    b.name="jack";
    b.age=25;
    a.city="安徽";
    //将user放入_list
    list.push(a);
    list.push(b);
     
    $.ajax({
    	url : 'test',
    	data : "list":JSON.stringify(list),
    	type : "POST",
    	success : function(data) {
    		alert(data);
    	}
    });
    

    JSON.stringify(list) 代码的作用是将 js 对象转换为 json 格式的字符串。这样,无论 js 对象多复杂,最终发送给服务器的请求参数就是一个 json 格式字符串罢了。

    后端代码
    @RequestMapping("test)
    @ResponseBody
    public String ajaxList(String list) throws Exception{
    
    	//jackson对象
    	ObjectMapper mapper = new ObjectMapper();
    
    	//使用jackson将json转为List<User>
    	JavaType jt = mapper.getTypeFactory().constructParametricType(ArrayList.class, User.class);   
    
    	List<User> userList=  (List<User>)mapper.readValue(list, jt);
    		
    	return "OK";
    }
    

    以上代码参数绑定的是 String 类型,因为 ajax 发送的就是 String 类型。接着,就是使用 jackson 工具将 json 字符串转换为 Java 对象即可。

    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    oracle中删除某个用户下的所有表
    oracle中关于clob类型字段的查询效率问题
    nvl(sum(字段),0) 的时候,能展示数据0,但是group by 下某个伪列的时候,查不到数据(转载)
    IDEA内存设置
    idea启动报Plugin Error错误的解决办法(亲测有效)
    有关大数据(如有侵权请联系博主删除)
    Spring AOP增强(Advice)
    带事务管理的spring数据库动态切换
    Spring配置多个数据源,并实现数据源的动态切换转载)
    洛谷 p1803 凌乱的yyy
  • 原文地址:https://www.cnblogs.com/binbingg/p/13886389.html
Copyright © 2011-2022 走看看