почему '<' отображается как < - PullRequest
4 голосов
/ 11 июня 2009

Я вывожу строку из моего Java-класса, как это

String numQsAdded = "<div id='message1'>"+getQuestion()+"</div>";

Эта строка отправляется обратно на сторону клиента в виде XMLHttpRequest. Итак, на моей странице JSP у меня есть метод предупреждения javascript, который печатает строку, возвращенную с сервера. переводит «<» в <code>&lt; и «>» в ​​&gt;

как мне этого избежать?

Я попытался изменить строку на:

String numQsAdded = "&lt;div id='message1'&gt;"+getQuestion()+"&gt;/div&lt;";

но это имеет еще худшие последствия. тогда «&» переводится как «amp»

Ответы [ 6 ]

5 голосов
/ 11 июня 2009

XMLHttpRequest кодирует строку перед отправкой. Вам придется убрать строку. на клиентской стороне javascript попробуйте использовать:

alert(unescape(returned_string))
3 голосов
/ 11 июня 2009

&lt; - это способ показать «<» в html, который создается из XMLHttpRequest. попробуйте использовать XMLRequest </p>

2 голосов
/ 11 июня 2009

Пол Фишер ответ правильный. Я возьму момент, чтобы объяснить, почему. HTML-кодирование содержимого с сервера - это мера безопасности для защиты ваших пользователей от атак с использованием скриптов. Если вы просто удалите unescape () с сервера, вы рискуете своими пользователями, а также репутацией своего сайта.

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

var divStuff = document.createElement('div');
divStuff.appendChild(containerElement);
divStuff.id = 'message1';
divStuff.innerHTML = getQuestion();

Это намного более безопасно и обеспечивает лучшее разделение для вашего уровня представления в вашем приложении.

2 голосов
/ 11 июня 2009

Это ссылка на сущность для "<", в то время как & gt; является ссылкой на сущность для «>», которую вам нужно удалить из строки, используя метод unescape ()

1 голос
/ 11 июня 2009

Может быть лучше отправить обратно необработанную строку с вашим сообщением и оставить клиентский Javascript для создания div с классом message1, чтобы вставить его. Это также поможет, если вы когда-нибудь решите изменить макет или стиль ваших уведомлений.

0 голосов
/ 11 июня 2009

Я не думаю, что вы можете избежать этого. Вот как «<» представляется в HTML, и результат будет в порядке на вашей HTML-странице. </p>

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