JSP / Javascript / JQuery: хранить содержимое html / javascript в переменной + записывать его в текстовое поле - PullRequest
2 голосов
/ 07 августа 2009

Я использую объект json для хранения различных битов контента, один из которых может содержать контент, относящийся к javascript и html (например, кавычки, точки с запятой, теги и т. Д.), Которые без кодирования могут разбить страницу. Чтобы обойти это, я использую:

"содержание": "<% = StringEscapeUtils.escapeHtml (StringEscapeUtils.escapeJavaScript (содержание))%>"

(я использую JSP в качестве технологии на стороне сервера, и это немного из встроенного JSON при загрузке страницы)

Это прекрасно работает, чтобы избежать любого символа, который может сломать страницу, но теперь мне нужно получить содержимое этой переменной в текстовое поле.

$ ( 'текстовое поле') вал (obj.content).

Чего я пытаюсь избежать, так это двойной кодировки, которая происходит в этот момент:

  • оригинальное содержание: <script>alert("hello world");</script>
  • переменная содержимого содержит: &lt;script&gt;alert(&quot;hello world&quot;);&lt;/script&gt;
  • текст в текстовой области гласит: &lt;script&gt;alert(&quot;hello world&quot;);&lt;/script&gt; когда это должно читаться <script>alert("hello world");</script>

Есть ли способ заставить эту работу?

Ответы [ 3 ]

1 голос
/ 08 августа 2009

Как насчет $('textarea').html(obj.content);?

В моих тестах использование функции html вместо val выполняет декодирование HTML-объекта.

0 голосов
/ 07 августа 2009

Вы могли бы использовать вместо StringEscapeUtils.escapeJavaScript? Если JSON находится в блоке <script>, этого должно быть достаточно, чтобы не разбить страницу, и декодирование не потребуется.

0 голосов
/ 07 августа 2009

Просто поместите это в эскейп. Я имею в виду $ ('textarea'). Val (unescape (obj.content));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...