我想嵌入一个JSON对象作为表单参数发送到rails服务器 这是我到目前为止:
<% form_tag :action => :create, :controller => :objects do %>
<%= text_field_tag :object %>
<%= submit_tag %>
<% end %>
和填充该字段的javascript。 data
是有效的JSON。
<script type="text/javascript">
$j(function(){
jQuery("#proposal").val(JSON.stringify(data));
});
</script>
但是,当服务器收到POST时,我需要将params[:object]
转换为哈希值,但它会被双重转义,即使使用.gsub("\\", "")
,JSON.parse也会出现错误,实际上并没有从字符串转换为JSON对象。
这是我的服务器收到的JSON字符串:
"{\"name\":\"hello there,
I am JSON!\",
\"template_id\":1,
\"variables\":{\"hello\":\"there\",
\"me\":\"you\"},
\"sections\":\"[{\\\"name\\\": \\\"Template Section\\\",
\\\"contents\\\": [{\\\"id\\\": 1,
\\\"name\\\": \\\"RENAMED!\\\"}]},
{\\\"name\\\": \\\"section2\\\",
\\\"contents\\\": [{\\\"name\\\": \\\"something\\\",
\\\"body\\\": \\\"nothing\\\"},
{\\\"id\\\": 2,
\\\"name\\\": \\\"I renamed you\\\",
\\\"variables\\\": {\\\"hello\\\": \\\"i'm amazing\\\"}}]}]\",
\"attachments\":\"[{\\\"media_id\\\": 1}]\"}"
答案 0 :(得分:1)
data
已经是一个json序列化字符串,您不必使用JSON.stringify()
,它将再次序列化它。只需按原样设置即可。
$j(function(){
jQuery("#proposal").val(data);
});