關於jquery、ajax向後臺傳輸數組的問題
最近在完成一個項目時,需要向後臺傳輸一些數組參數和字符串參數,但發現只有字符串傳過去了,
接收參數名必須加上“[]”纔可以(這是由於jquery對其進行了轉換),否則後臺識別不出來, 就會接收不到。
源碼示例
前端html:
<script>
function test() {
var cradle =["1","2"];
var provinces = ["廣東省","浙江省"];
$.post('api/base/typhoonInfo', {
cradle: cradle,
provinces: provinces,
}
, function (data) {
console.log(data);
});
}
</script>
Controller:
@RequestMapping(value="/typhoonInfo",method = RequestMethod.POST)
@ResponseBody
public void getTyphoonInfo(@RequestParam(value = "cradle[]") String[] cradle,
@RequestParam(value = "provinces[]") String[] provinces){ //注意value內參數的寫法!!!
System.out.println(cradle[0]+" "+provinces[0]); //發現控制檯可以輸出想要的結果了
}
還有一種是直接用實體類接收,前提是傳過來的data字段中的屬性名必須和實體類的屬性名一致才能自動匹配,否則未匹配到的字段將爲null。
前端代碼:
<script>
function test() {
var users=[{
name:'張三',
age:'21',
birth:'1994-02-22'
},
{
name:'李四',
age:'20',
birth:'1995-12-11'
},
{
name:'王五',
age:'20',
birth:'1998-10-04'
}];
$.post('api/base/user', {
users:users,
}
, function (data) {
console.log(data);
});
}
</script>
後臺接收數據:
@RequestMapping(value="api/base/user",method=RequestMethod.POST)
public void getUsers(@RequestBody User[] users){ //要用@RequestBody註解接收,User是已定義好的實體類,也包含name、age、birth三個屬性
for(User u : users){
System.out.println(u.getName()+" "+u.getAge()+" "+u.getBirth());
}
}
後臺我用的是springboot,前端傳遞參數用的是Jquery封裝的ajax方法寫的。