Вам не нужно ничего переводить в строку, чтобы поместить это в settings.data
. data
является :
Данные для отправки на сервер. Он преобразуется в строку запроса, если это еще не строка. Он добавляется в URL для GET-запросов. [...] Объект должен быть парой ключ / значение.
То, что вы делаете, помещаете эту строку:
"{"list_item[title]":"hi?? there"}"
в data
, но эта строка не является строкой запроса, поэтому все будет запутано. Вы должны иметь возможность просто назначить свой объект JavaScript для settings.data
:
settings.data = { 'list_item[title]' : 'hi?? there' };
и пусть jQuery оттуда разберется.
Обновление основано на доказательствах, а не на документации:
Однако дальнейшее расследование показывает, что это не работает. Если я отправляю запрос GET, все изменения, которые я делаю в settings.data
, игнорируются, но если я отправляю запрос POST, то меняется на settings.data
stick, но вы должны использовать формат строки запроса, чтобы получить что-нибудь разумное через:
settings.data = encodeURIComponent('list_item[title]')
+ '='
+ encodeURIComponent('hi?? there');
Версия settings.data
в сочетании с запросом POST дает мне следующее:
Parameters: {"list_item"=>{"title"=>"hi?? there"}}
на сервере, и это похоже на то, что вы ищете. Если вы хотите сохранить некоторые из исходных параметров, вам придется распаковать и заново упаковать строку запроса вручную.