我想使用jquery
将javascript数组发送到rails应用程序$.ajax
url: 'some url'
data: {list: [{id: 4, name: 'John'}, {id: 5, name: 'Locke'}]}
method: 'post'
dataType: 'json'
此方法的问题在于序列化如下:
list [0] [id] = 4& list [0] [name] = John& ...等等
在Rails方面领先于
{"list"=>
{
"0"=>{"id"=>"4", "name"=>"John"},
"1"=>{"id"=>"5", "name"=>"Locke"}
}
}
虽然我想得到像
这样的东西 {"list"=>
[
{"id"=>"4", "name"=>"John"},
{"id"=>"5", "name"=>"Locke"}
]
}
(注意内部列表而不是内部哈希)
有没有一种干净漂亮的方式以rails认可的方式发送数据?
(PS:该视图不是由rails生成的,它是一个phonegap移动应用程序)
这个问题jQuery posting JSON与我的问题没什么关系。
我的问题是以特定方式序列化,而问题是关于如何序列化。
答案 0 :(得分:2)
我为您看到两个选项:
正如其他人所建议的那样,在您的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
将成为原始数组中的每个元素。