1. 程式人生 > 實用技巧 >JQuery Ajax 請求引數 List 集合處理

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"T)
@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 物件即可。