Javascript 以Rails友好的方式使用jquery序列化数组
我想使用jquery向rails应用程序发送一个javascript数组Javascript 以Rails友好的方式使用jquery序列化数组,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我想使用jquery向rails应用程序发送一个javascript数组 $.ajax url: 'some url' data: {list: [{id: 4, name: 'John'}, {id: 5, name: 'Locke'}]} method: 'post' dataType: 'json' 此方法的问题在于它序列化如下: 列表[0][id]=4&列表[0][name]=John&。。。诸如此类 引导,在轨道一侧到类似 {"list"=>
$.ajax
url: 'some url'
data: {list: [{id: 4, name: 'John'}, {id: 5, name: 'Locke'}]}
method: 'post'
dataType: 'json'
此方法的问题在于它序列化如下:
列表[0][id]=4&列表[0][name]=John&。。。诸如此类
引导,在轨道一侧到类似
{"list"=>
{
"0"=>{"id"=>"4", "name"=>"John"},
"1"=>{"id"=>"5", "name"=>"Locke"}
}
}
我想买点像这样的东西
{"list"=>
[
{"id"=>"4", "name"=>"John"},
{"id"=>"5", "name"=>"Locke"}
]
}
(注意内部列表而不是内部哈希)
有没有一种干净、漂亮的方式来以rails能够识别的方式发送数据
(注:该视图不是由rails生成的,它是phonegap移动应用程序)
这个问题与我的问题无关
我的问题是以特定的方式序列化,而问题是如何序列化。我为您提供了两种选择: 正如其他人所建议的,在AJAX调用中使用
JSON.stringify()
/JSON.generate()
。是的,Rails将以单个字符串的形式获取数据,但这没关系。收到数据后,使用JSON.parse()
将其转换回JSON
第二,不管怎样,只需迭代它:
h = {"list"=>
{
"0"=>{"id"=>"4", "name"=>"John"},
"1"=>{"id"=>"5", "name"=>"Locke"}
}
}
h['list'].each do |elem|
value = elem[1]
end
# => {"id"=>"4", "name"=>"John"}
# => {"id"=>"5", "name"=>"Locke"}
在每次迭代中,
value
将成为原始数组中的每个元素。使用json.stringify(obj)
将数据转换为json的可能重复项。所有现代客户端(和IE8)都在本地支持它。现在jQuery将“数据”解释为单个字符串,因为Rails服务器可能不支持它。JSON.stringify(obj)可能不是答案!是的,根据服务器和jQuery,数据都是单个字符串;确保rails服务器知道内容类型是json(使用内容类型头或format::json或将.json附加到链接)