JQuery/ JSON: не будет сохранять и
Я сохраняю текст с помощью jquery и json.
Я получаю текст textarea с помощью.text() и сохраняю его с помощью json. Все специальные символы кроме \ и 'сохраняются.
Если я попытаюсь сохранить %&$§/////blaääüü**´~+
это работает, но если я пытаюсь сохранить%&$§/////blaääüü**´~+\\\\\\\'''''
это не работает!
Как я могу решить это?
редактировать
Код для сохранения: (извлечь)
$.ajax({
url: "myURI"
, type: "POST"
, dataType: "json"
, data:
"{ " +
"', 'text': '" + $('#myText').text() +
"' }"
, contentType: "application/json; charset=utf-8";
});
1 ответ
Итак, ваша главная проблема в том, что созданный вами JSON недопустим и вы создаете его "вручную". Результат вашей конкатенации строк:
{ ', 'text': '%&$§/////blaääüü**´~+\\\'''''' }
который на самом деле не похож на JSON.
использование JSON.stringify
[MDN] (также доступна внешняя библиотека):
data: JSON.stringify({text: $('#myText').text()})
Дальнейшие вопросы:
Ключи в JSON должны быть в двойных кавычках, а не в одинарных.
Тот факт, что текст содержит escape-символ (
\
) и одинарные кавычки ('
) портит последнюю созданную вами строку. Вот почему вы должны оставить правильное экранирование контента и создания для браузера.В зависимости от используемого вами языка на стороне сервера вы должны назначить JSON ключу, чтобы на сервер была отправлена правильная пара ключ-значение:
data: {json: JSON.stringify(...)}