【问题标题】:Pass array of arrays from javascript to spring mvc controller using ajax使用ajax将数组从javascript传递到spring mvc控制器
【发布时间】:2017-08-09 13:41:30
【问题描述】:

所以我在这里有一个小问题,如上所述。在下面的第一个示例中,我传递了一个有效的简单数组。如果我想在第二个示例中传递一个数组数组,它​​就不再起作用了。有什么建议吗?

这行得通:

JS

var myArrayOfStrings = ["x", "y"];

function createConsumer(){
        $.ajax({
             type: "POST",
             url: "/save",
             data: { myArray: myArrayOfStrings }
        });
    }

控制器

@RequestMapping(value = "/save", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody
    void Submit(@RequestParam("myArray[]") String[] name) {
        System.out.println(name[0]);
    }

以下解决方案不起作用,为什么?我只想传递一个 Array of Array 而不是“简单数组”。它将如何运作?

JS

var myArrayOfArrays = [["x", "y"],["x", "y"]];


function createConsumer(){
        $.ajax({
             type: "POST",
             url: "/save",
             data: { myArray: myArrayOfArrays }
        });
    }

控制器

@RequestMapping(value = "/save", method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody
    void Submit(@RequestParam("myArray[][]") String[][] name) {
        System.out.println(name[0][0]);
    }

【问题讨论】:

    标签: javascript jquery arrays ajax spring-mvc


    【解决方案1】:

    我认为你应该先用 JSON.stringify() 序列化你的嵌套数组,然后再用 AJAX 传递它。

    var myArrayOfArrays = [["x", "y"],["x", "y"]];
    
    function createConsumer(){
        $.ajax({
             type: "POST",
             url: "/save",
             data: JSON.stringify({ myArray: myArrayOfArrays })
        });
    }
    

    亲切的问候。

    【讨论】:

    • 如何更换控制器?
    • @RequestParam("myArray") 字符串名称
    【解决方案2】:

    这个解决方案有效

    JS

    var myArrayOfArrays = [["x", "y"],["x", "y"]];
    
    function createConsumer(){
        $.ajax({
             contentType: "application/json",
             type: "POST",
             url: "/save",
             data: JSON.stringify(myArrayOfArrays)
        });
    }
    

    控制器

    @RequestMapping(value = "/save", method = RequestMethod.POST)
        public @ResponseBody void Submit(@RequestBody String[][] name) {
            System.out.println(name[0][0]);
        }
    

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 1970-01-01
      • 2013-07-07
      • 2014-11-21
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      相关资源
      最近更新 更多