将json编码的字符串解码回javascript中的文字html值

时间:2012-02-20 21:45:55

标签: javascript json

我在这里有一个非常基本的示例网站:

http://simondouglas.com/stackexchange/jsonencodeproblem/ 编辑:这现在有效。我将此处保留给其他用户。

如果您输入“members”,您将收到数据作为JSON对象,它在控制台中。问题是我似乎无法将作者字符串解码为文字HTML。

由于没有手动进行我自己的字符串替换(将>替换为>等),因此可以自动执行编码。

原始问题: http://simondouglas.com/stackexchange/jsonencodeproblem/bad.php
(在源头粘贴不起作用)

从第60行开始的解决方案

        <dt>
        <strong>${name}</strong><br/>
        {{html getAuthorLink()}}
        </dt>

您可以在模板中传递一个属性,以使用html而不是纯文本。

3 个答案:

答案 0 :(得分:0)

简短的回答是您必须自己解码这些值。 escape() / unescape()及其现代世界等价物用于URI编码,而不是HTML编码。

最常用的方法是替换字符串中的编码值,但是如果性能不是真正的问题,或者您宁愿依赖浏览器实现,则可以尝试使用各种DOM构造和提取技术。

答案 1 :(得分:0)

试试这个。 http://phpjs.org/functions/html_entity_decode:424

基本上是php的html_entity_decode for javascript的一个端口。应该做你想要的。

你也需要这个,因为它是^

的依赖

http://phpjs.org/functions/get_html_translation_table:416

答案 2 :(得分:0)

这里的问题似乎是jQuery-tmpl。它将数据视为文本,而不是HTML。数据不是以开头编码的,jQuery-tmlp在打印之前对其进行编码。

不是返回HTML,而是将HTML添加到模板中,让JSON返回链接和名称,并相应地填写。

<dt>
    <strong>${name}</strong><br/>
    <a href="${authorLink}">${authorName}</a>
</dt>

或者使用jQuery构建HTML并将其附加到append