我正在输出一个像我这样的java类的字符串
String numQsAdded = "<div id='message1'>"+getQuestion()+"</div>";
此字符串将作为XMLHttpRequest发送回客户端。所以,在我的jsp页面中,我有一个javascript警报方法,它打印出从服务器返回的字符串。它翻译'&lt;'到<
和'&gt;'到>
我怎么能避免这个?
我尝试将字符串更改为:
String numQsAdded = "<div id='message1'>"+getQuestion()+">/div<";
但这会产生更糟糕的影响。那么'&amp;'被翻译为'amp'
答案 0 :(得分:5)
XMLHttpRequest在发送之前对字符串进行编码。你将不得不unescape字符串。 在客户端javascript,尝试使用:
alert(unescape(returned_string))
答案 1 :(得分:3)
<
是显示“&lt;”的方式在html中,它是从XMLHttpRequest生成的。尝试使用XMLRequest
答案 2 :(得分:2)
它是“&lt;”的实体引用而&amp; gt;是“&gt;”的实体参考你需要使用unescape()方法来取消字符串
答案 3 :(得分:2)
尝试做保罗说的话。这并不困难,而且更加安全。为了方便起见,这是一个示例:
var divStuff = document.createElement('div');
divStuff.appendChild(containerElement);
divStuff.id = 'message1';
divStuff.innerHTML = getQuestion();
这样更加安全,可以为您的应用程序中的表示层提供更好的分离。
答案 4 :(得分:1)
最好在您的邮件中发回原始字符串,然后让客户端Javascript创建一个div
,其中包含message1
类,以便将其放入。如果您决定,这也会有所帮助改变通知的布局或风格。
答案 5 :(得分:-2)
我认为你不能避免这种情况。这就是“&lt;”用HTML表示,结果在HTML页面上就可以了。