【发布时间】:2015-12-08 14:26:49
【问题描述】:
使用 jQuery 我正在尝试输出包含大量 HTML 的 Json 数据。这导致 HTML 以纯文本形式打印出来,因为它在其周围加上了引号。我想要它作为格式化的 HTML。我怎样才能做到这一点?这是来自 Reddit API 的 Json 数据。
我的 jQuery
$.getJSON('https://www.reddit.com/r/GlobalOffensive/.json', function(data) {
$.each(data.data.children.slice(0,5), function(key, val) {
longHTML += '<div class="post">'+val.data.selftext_html+'</div><hr>'
});
$(".reddit-content").html(longHTML);
});
结果
<div class="post">"<!-- SC_OFF --><div class="md"><h3><a href="#fnatic-logo"></a> Fnatic 0-2 <a href="#vp-logo"> ... etc etc ... <hr/> </div><!-- SC_ON -->"</div>
【问题讨论】:
-
问题在于 API 返回的 HTML 中所有特殊字符都替换为它们的实体。所以它们会按字面意思显示。我不确定他们为什么要这样做。
-
来自 reddit API documentation:注意:HTML 字符串将被转义。您必须取消转义才能获得原始 HTML。
-
$.getJSON('reddit.com/r/GlobalOffensive/.json', function(data) { var longHTML = ""; $.each(data.data.children.slice(0,5), function(key, val) { var temp = $.parseHTML(val.data.selftext_html); if(temp){ longHTML += '' + $(temp).text() + '
'; }else{ longHTML += ''+temp+'
' } }); $(".reddit-content").html( longHTML); });看到这个小提琴:jsfiddle.net/hexjrbcb
标签: javascript jquery html json