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(...)}
    
Другие вопросы по тегам