2009-08-07 1 views
2

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

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

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

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

$ ('textarea'). Val (obj.content);

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

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

Любой способ сделать эту работу?

ответ

0

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

+0

unescape() не влияет на содержимое. – Dan

+0

Да, вы - rigth :(извините - вам нужно обработать сущность htmp вручную. –

0

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

+0

Вот как это было изначально, но из-за того, что в моем контенте есть элемент unencoded «», он преждевременно закрывает

 Смежные вопросы

  • Нет связанных вопросов^_^