一般的,可能有些人在一個參數有多個值的情況下,可能以某個字符分隔的形式傳遞,比如頁面上有多個checkbox:
$.ajax{
url:"xxxx",
data:{
p: "123,456,789"
}
}
然後後臺獲取參數後再分隔,這種做法有很大弊端,試問如果某一個參數值中出現了分隔符所使用的字符,會出現什麼情況呢?當然後臺獲取的參數將與實際情況不符.
這時我想到了將上述代碼寫成這樣:
$.ajax{
url:"xxxx",
data:{
p: ["123", "456", "789"]
}
}
如果單純寫成這樣,在java後臺是無法取到參數的,因爲jQuery需要調用jQuery.param序列化參數, jQuery.param( obj, traditional )默認的話,traditional爲false,即jquery會深度序列化參數對象,以適應如PHP和Ruby on Rails框架, 但servelt api無法處理,我們可以通過設置traditional 爲true阻止深度序列化,然後序列化結果如下:
p: [“123”, “456”, “789”] => p=123&p=456&p=456
隨即,我們就可以在後臺通過request.getParameterValues()來獲取參數的值數組了,
所以,比如我們前臺有多個checkbox,前臺的代碼可以寫成:
var values = $("input[type=checkbox]").map(function(){
return $(this).val();
}).get();
$.ajax{
url:"xxxx",
traditional: true,
data:{
p: values
}
}