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
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    对TCP/IP协议的一些看法(12):UDP协议
    对TCP/IP协议的一些看法(11):窗口
    对TCP/IP协议的一些看法(10):TCP协议(2)
    对TCP/IP协议的一些看法(9):TCP协议(1)
    对TCP/IP协议的一些看法(8):DNS协议
    对TCP/IP协议的一些看法(7):传输层
    [BFS]翻币问题
    [BFS]骑士旅行
    [BFS]电子老鼠闯迷宫
    [BFS]P1434 [SHOI2002]滑雪
  • 原文地址:https://www.cnblogs.com/binbingg/p/13886389.html
Copyright © 2011-2022 走看看