从js发送多维数组到sinatra



目前我正试图找到一种方法,通过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

相关内容

  • 没有找到相关文章

最新更新