2017-08-09 79 views
0

所以我在这里有一个小问题,如上所述。在下面的第一个例子中,我传递了一个正在工作的简单数组。如果我想在第二个例子中传递一个数组数组,它​​就不再工作了。有什么建议么?从javascript传递数组阵列到弹簧mvc控制器使用ajax

这个工程:

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]); 
    } 

下面的解决方案是行不通的,为什么呢?我只想通过阵列而不是“简单阵列”。它将如何工作?

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]); 
    } 

回答

0

这个解决方案工作

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]); 
    } 
1

我想你应该系列化你用JSON.stringify()你AJAX传递之前嵌套数组。

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

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

亲切的问候。

+0

我将如何改变控制器? –

+0

@RequestParam(“myArray”)字符串名称 – NikNik

+0

谢谢!伟大的提示! –

相关问题