2017-08-09 1 views
0

Also habe ich ein kleines Problem hier wie beschrieben. Im folgenden ersten Beispiel übergebe ich ein einfaches Array, das funktioniert. Wenn ich im zweiten Beispiel ein Array von Arrays übergeben möchte, funktioniert es nicht mehr. Irgendwelche Vorschläge?Pass Array von Arrays von Javascript zu Federmvc-Controller mit Ajax

dies funktioniert:

JS

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

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

-Controller

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

Die folgende Lösung funktioniert nicht, warum? Ich möchte nur ein Array von Array statt eines "einfachen Array" übergeben. Wie wird es funktionieren?

JS

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


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

-Controller

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

Antwort

0

diese Lösung arbeitete

JS

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

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

-Controller

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

Ich glaube, Sie sollten Ihre verschachtelte Array mit JSON.stringify() serialisiert werden, bevor Sie es mit AJAX passieren.

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

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

Mit freundlichen Grüßen.

+0

Wie würde ich den Controller ändern? –

+0

@RequestParam ("myArray") String-Name – NikNik

+0

danke! toller Hinweis! –

Verwandte Themen