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 對象即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM