关于jquery、ajax向后台传输数组的问题

来源:互联网 发布:轰天雷软件下载 编辑:程序博客网 时间:2024/05/22 20:28

关于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)    @ResponseBodypublic 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方法写的。

  • 参考博客:前端传值给后台的三种方法
原创粉丝点击