2016-02-18 34 views
0

我有一个脚本向服务器发出ajax请求。然后服务器返回HTML代码。请求完成后,我想将HTML代码放到我的网站上。jQuery .html(someHTML)不起作用

我遇到的问题是功能.html()将显示HTML为文本而不是HTML。

这里是我做了什么

var postData = 
{ 
    'campaign_id': 1, 
    'page_role': 'intro' 
}; 

$.ajax({ 
    type: 'POST', 
    url: 'url/to/get/html', 
    data: postData, 
    dataType: "text", 
    beforeSend: function(jqXHR, settings){ 
     $('#MasterContentViewer').html('<div class="well innerwell">' + 
              '<h3>Please wait while loading the next page</h3>'+ 
             '</div>'); 
    }, 
    error: function(jqXHR, textStatus, errorThrown){ 

     alert('Loading content failed! Error Code: ' + jqXHR.status); 
    }, 
    success: function(page){ 

     $('#MasterTable').removeClass('heightForIFrame'); 
     $('#MasterContent').removeClass('heightForIFrame'); 

     $('#MasterContentViewer').html(page); 

    } 
}).done(function(page) { 

    var tags = $("meta[name^='is_system_'],meta[name^='is_attr_']"); 

    $.each(tags, function(index, tag){ 

     var value = $(tag).attr('value'); 

     var name = $(tag).attr('name').replace('is_attr_', '').replace('is_system_', ''); 

     $('#attr_' + name + ':input').val(value); 
     $('#attr_' + name).not('input').text(value); 

     $('.attr_' + name + ':input').val(value); 
     $('.attr_' + name).not('input').text(value); 

    }); 

我试图改变以下类似

$('#MasterContentViewer').html(page); 

$('#MasterContentViewer').empty().append(page); 

也没有工作。

我也尝试将dataType从“text”更改为“html”,这也不起作用。

如何让页面显示html代码而不是文本?

修订

下面是用户看到的屏幕

<strong>Store Name: </strong><span class="attr_storename"></span> </div> <div class="scripter_header_label"> <strong>Store Number: </strong><span class="attr_alt_id_1"></span> 
+0

您是否检查过您收到的回复是HTML字符串而不是呈现的HTML? – stark

+0

不确定你的意思,但我的网页显示用户的HTML标签,而不是呈现HTML –

+1

你可以发布你在'page'变量中收到的值吗? – stark

回答

0

如果.html(string)被追加要素文字上的东西,然后样品,这意味着该内容已经HTML编码(例如, <的字符串为&gt;)。如果你使用.text(string)而不是html(string)来告诉它,jQuery将只对html进行编码。

两个可能的解决方案是:

  1. 修改服务器端代码发送非编码的HTML
  2. HTML Decode使用JavaScript字符串(我不推荐这种方法,但是,因为它迎合了HTML注射攻击)。