關於jquery、ajax向後臺傳輸數組的問題

關於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方法寫的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章