目前我正在尝试找到一种方法,通过ajax将多维数组从jQuery发送到服务器。这是我的代码:
$.ajax({
type: "POST",
url: "/save",
data: ["string", [["string1", "string2"], ["string 3", "string 4"]]],
// it is arbitrary how many of the ["string", "string"] type arrays
// there could be in the second element of the containing array.
callback: save, // Don't worry about this function, it currently doesn't get called.
dataType: "text"
});
现在发生的事情是,当服务器收到它并puts params.inspect
时,它会输出{undefined=>""}
。我认为解决方案可能在于将数组转换为jQuery中的字符串并在服务器接收后将其转换回来,但我不知道。
P.S。对于那些可以在vanilla js而不是jQuery中执行此操作的人,我尝试做的就是向/save
发送ajax post请求,其中包含1个参数:["string", [["string1", "string2"], ["string 3", "string 4"]]]
。
更新
我使用谷歌chromes检查元素菜单来查看发送到服务器的请求。服务器按预期响应,当我查看发送的表单数据时,我看到了这一点(发送{" 1":["匹配",[[" a&#34] ;," a"],[" s"," s"]]]}):
1[]:match
1[1][0][]:a
1[1][0][]:a
1[1][1][]:s
1[1][1][]:s
这是否表示表单已正确发送?
答案 0 :(得分:0)
您没有发送键/值对...只是恰好是数组的值。
尝试发送为:
var myArray = ["string", [["string1", "string2"], ["string 3", "string 4"]]];
$.ajax({
type: "POST",
url: "/save",
data: { postKeyName : myArray},
callback: save,
dataType: "text"
});
jQuery将负责在内部结束数组的形式,你只需要在你命名的post param中接收数组,而不是postKeyName