所以我在这里描述了一个小问题。在下面的第一个例子中,我传递了一个正常工作的简单数组。如果我想在第二个例子中传递一个数组数组,它就不再工作了。有什么建议吗?
这有效:
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 :(得分:1)
我认为你应该在用AJAX传递它之前用JSON.stringify()序列化你的嵌套数组。
var myArrayOfArrays = [["x", "y"],["x", "y"]];
function createConsumer(){
$.ajax({
type: "POST",
url: "/save",
data: JSON.stringify({ myArray: myArrayOfArrays })
});
}
亲切的问候。
答案 1 :(得分: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]);
}