Как мне вставить объект JSON в форму HTTP POST? - PullRequest
0 голосов
/ 28 февраля 2012

Я хочу встроить объект 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}]\"}"

1 Ответ

1 голос
/ 28 февраля 2012

data уже является сериализованной строкой json, вам не нужно использовать JSON.stringify(), которая снова ее сериализует. Просто установите его как есть.

$j(function(){
    jQuery("#proposal").val(data);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...