jQuery通過ajax傳送陣列的問題
$.ajax等api在我剛開始使用的時候,以為僅僅能傳送form表單,後來慢慢才知道,原來還能傳送簡單的一個字串或者是多個數組!如果是陣列的話,只需要在struts2後臺,建立一個List<String>陣列同名就可以自動封裝了,很是方便。當時遇到很多問題,現在有空回頭整理一下ajax傳送陣列的問題。結合查詢了多個BLOG,這裡集中總結:
(1)查詢到的BLOG
最近在用jQuery的ajax方法傳送請求時需要傳送一個數組作為引數,結果在後臺接收的時候發現接收不到這個陣列。程式碼時這樣的:
1 |
var arr
= [] |
2 |
arr.push(“aaa”); |
3 |
arr.push(“bbb”); |
4 |
arr.push(“ccc”); |
5 |
$.ajax({ |
6 |
url:”a.html”, |
7 |
data:{“arr”:arr}, |
8 |
type:”post” |
9 |
}); |
google之後發現,需要在data引數裡,加一個traditional:true的引數,這樣就能正常傳送陣列引數了。
原因時從1.4以後,jQuery改變了引數的序列化方法。
(2)關於上一篇提到的traditional引數的解釋的,另一篇blog
一般的,可能有些人在一個引數有多個值的情況下,可能以某個字元分隔的形式傳遞,比如頁面上有多個checkbox:
1 |
$.ajax{ |
2 |
url: "xxxx" , |
3 |
data:{ |
4 |
p: "123,456,789" |
5 |
} |
|