2015-06-15 130 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));