目前我正试图找到一种方法,通过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中的字符串,并在服务器接收后将其转换回来,但我不知道。
注:对于那些可以在香草js中做到这一点而不是jQuery的人,我所要做的就是向/save
发送一个ajax post请求,带有1个参数:["string", [["string1", "string2"], ["string 3", "string 4"]]]
。
更新
我使用google chrome检查元素菜单来查看发送到服务器的请求。服务器按预期响应,当我查看发送的表单数据时,我看到了以下内容(当发送{"1":["match", [["a", "a"], ["s", "s"]]]}时):
1[]:match
1[1][0][]:a
1[1][0][]:a
1[1][1][]:s
1[1][1][]:s
这是否表示表单发送正确?
您没有发送密钥/值对…只有一个恰好是数组的值。
尝试发送:
var myArray = ["string", [["string1", "string2"], ["string 3", "string 4"]]];
$.ajax({
type: "POST",
url: "/save",
data: { postKeyName : myArray},
callback: save,
dataType: "text"
});
jQuery会在内部处理数组的形式结束,你只需要在你的名字的post参数中接收数组,而不是postKeyName