2015-06-15 228 views
2

我的PHP和Javascript文件有一个奇怪的问题。我的数据库中有HTML内容,我想将其插入到我的页面中。所以,我得到的值,并将其传递到HTML页面是这样的:字符串不能解析为HTML

$string = preg_replace("/\r|\n/", "", htmlentities($formcontent)); 

我得到它,我可以使用它传递给我的javascript,像这样的字符串:

var contentform = '<?php echo $string; ?>'; 

现在我想要将这个HTML插入到我的页面中。我已经创建了一个div,但是如果我插入它,它会一直处理为一个字符串,因此不会显示任何DOM。

var htmltrimmed = $.trim(contentform); 

var htmlcontent = $.parseHTML(htmltrimmed); 
console.log(htmltrimmed); 
$('#currentform').html(htmltrimmed); 

但是当我检查检查实际div的控制台,还有刚刚插入一个普通的字符串:

string in html

你看它被作为字符串处理。但我真的不明白为什么它会这样。

编辑:

这是contentform值,我剪了一些糟糕的是,因为字符串很长,但实际值是一个有效的HTML字符串!:

&lt;form class=&quot;form-horizontal&quot; &gt;&lt;fieldset&gt;&lt;!-- Form Name --&gt;&lt;legend&gt;DMN SGT&lt;/legend&gt;&lt;!-- Multiple Radios --&gt;&lt;div class=&quot;control-group&quot;&gt; &lt;label class=&quot;control-label&quot; for=&quot;multipleradios-0&quot;&gt;Grund der Messebesuch&lt;/label&gt; &lt;div class=&quot;controls&quot;&gt; &lt;label class=&quot;radio&quot; for=&quot;multipleradios-0-0&quot;&gt;  &lt;input type=&quot;radio&quot; name=&quot;multipleradios-0&quot; id=&quot;multipleradios-0-0&quot; value=&quot;Konkretes Interesse an Produkt&quot; checked=&quot;checked&quot;&gt; 
+0

什么是代替你分配给'contentform'的值? –

+0

请参阅编辑,这是一个非常长的字符串,所以我削减了一些,想法应该是一样的。 –

回答

2

使用$.parseHTML您例如

看看这个例子:http://jsfiddle.net/kevalbhatt18/Lny2m0kc/1/

var t = $.parseHTML('&lt;form class=&quot;form-horizontal&quot; &gt;&lt;fieldset&gt;&lt;!-- Form Name --&gt;&lt;legend&gt;DMN SGT&lt;/legend&gt;&lt;!-- Multiple Radios --&gt;&lt;div class=&quot;control-group&quot;&gt; &lt;label class=&quot;control-label&quot; for=&quot;multipleradios-0&quot;&gt;Grund der Messebesuch&lt;/label&gt; &lt;div class=&quot;controls&quot;&gt; &lt;label class=&quot;radio&quot; for=&quot;multipleradios-0-0&quot;&gt;  &lt;input type=&quot;radio&quot; name=&quot;multipleradios-0&quot; id=&quot;multipleradios-0-0&quot; value=&quot;Konkretes Interesse an Produkt&quot; checked=&quot;checked&quot;&gt;') 
console.log(t); 

$('#test').html(t[0].data) 

+0

谢谢。这是答案。我只需要从数组中获得它,就像你对这条线做的那样:t [0] .data –

1

的问题是由于在字符串中,你从PHP呼应HTML编码。没有原生JS功能,所以你需要提供自己的解码HTML,这样的事情:

function htmlDecode(value){ 
    return String(value) 
     .replace(/&quot;/g, '"') 
     .replace(/&#39;/g, "'") 
     .replace(/&lt;/g, '<') 
     .replace(/&gt;/g, '>') 
     .replace(/&amp;/g, '&'); 
} 

$('#currentform').html(htmlDecode(contentform)); 

Example fiddle

1

请html_entity_decode尝试ヶ辆

$string = preg_replace("/\r|\n/", "", html_entity_decode($formcontent));