在javascript中取消&符号的&符号

Wil*_*ese 5 javascript firefox jquery escaping

我无法正确显示包含转义字符的值(即撇号存储为\'和不存在',括号是&gt;&lt;而不是><).

存储在我的数据库中的项目的字符(' < >)\' &lt; &gt;分别转义为().当我尝试使用JavaScript动态地将它们添加到页面时,它们以Firefox中的转义形式打印出来,而不是像IE中那样返回到它们的正常值(&lt;正在打印到HTML而不仅仅是<).

<html>
    <head>
        <script type="text/javascript">
         $(document).ready(function() {
            var str = "&gt;";
            $(document.body).html(str);
         });
        </script>
    </head>
    <body>

    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我知道如果我只是做一个替换,我可以正确打印,但通过这样做,我允许注入HTML代码,这就是我首先逃避字符串的原因.

添加:

首先,我为我的帖子中的错误道歉.仔细检查后,在我使用$().html()的情况下,字符串正确打印.它们无法正确打印的时间是我使用下面的代码.

var str = "&gt;";
$('#inputField').val(str);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,显示文本">",而不是">".有什么我可以做的来解决这个问题吗?

Mrc*_*ief 13

你需要像这样解码它们:

$('#myText').val($("<div/>").html(str).text());
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/QUbmK/

您也可以将解码部分移动到也可以调用它:

function jDecode(str) {
    return $("<div/>").html(str).text();
}

$('#myText').val(jDecode(str));
Run Code Online (Sandbox Code Playgroud)