2017-08-09 56 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

謝謝!偉大的提示! –