jQuery.html()结果,浏览器不解释为HTML

时间:2015-04-16 11:51:00

标签: javascript jquery html

成功调用ajax之后,我想在屏幕上打印结果(在DIV中)。 这个结果是一段HTML代码。

$.ajax({
    url: window.location.pathname + '/feedback-campaigns',
    type: 'GET',
    contentType: 'text/html',
    success: function(data, textStatus, jqXHR) {
        var result = data.campaigns.campaigns[0].text; 
        // result = "<b>TEST - do you see me?</b>"
        $('.campaign-top-product-detail-page').html(result);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log('NOK');
    }
});

但是,在屏幕上我看到了:

<b>TEST - do you see me?</b>

而不是粗体文字。

3 个答案:

答案 0 :(得分:3)

这是因为来自服务器的响应包含HTML实体,而不是实际的HTML标记。要解决此问题,只需发送<b>TEST - do you see me?</b>等HTML即可。 (如果您在服务器上使用PHP,那么请不要在输出中使用htmlspecialchars

答案 1 :(得分:3)

使用以下

$.ajax({
           url: window.location.protocol + '//' + window.location.host + window.location.pathname + '/feedback-campaigns',
           type: 'GET',
           contentType: 'text/html',
           success: function(data, textStatus, jqXHR) {
                    var result = $.parseHTML(data.campaigns.campaigns[0].text); // result = "&lt;b&gt;TEST - do you see me?&lt;/b&gt;"
                    $('.campaign-top-product-detail-page').html(result);  
          },
          error: function(jqXHR, textStatus, errorThrown) {
                    console.log('NOK');
          }
}); 

更新:像这样写$.parseHTML(data.campaigns.campaigns[0].text);

答案 2 :(得分:0)

请记住,像&lt这样的内容不会被视为HTML代码的一部分,而是一些角色。因此,如果您想要显示粗体文本,您应该让它返回如下

<b>TEST - do you see me?</b>

但是,如果您没有编辑结果的权限,则其他答案也不错。