2012-02-27 5 views
0

フォームパラメータとしてJSONオブジェクトを埋め込み、レールサーバーに送信したいと考えています。ここ
は、私がこれまで持っているものです。JSONオブジェクトをHTTP POSTフォームに埋め込むにはどうすればよいですか?

<% form_tag :action => :create, :controller => :objects do %> 
    <%= text_field_tag :object %> 
    <%= submit_tag %> 
<% end %> 

とフィールドを移入するためのjavascript。 dataは有効なJSONです。

サーバがPOSTを受信
<script type="text/javascript"> 
$j(function(){ 
    jQuery("#proposal").val(JSON.stringify(data)); 
}); 
</script> 

しかし、私はハッシュに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}]\"}" 

答えて

1

dataはすでにあなたは再びそれをシリアル化しますJSON.stringify()を使用するように持っていけないJSONシリアライズされた文字列です。それをそのまま設定してください。

$j(function(){ 
    jQuery("#proposal").val(data); 
}); 
+0

これは[object Object]をテキストフィールドに描画します。 – NullVoxPopuli

+0

サーバーからjson文字列を取得するにはどうすればよいですか? – ShankarSangoli

+0

JSではハードコードされています。 – NullVoxPopuli

関連する問題