2015-06-15 3 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

Вы видите, что получает лечение в виде строки. Но я действительно не понимаю, почему это так.

EDIT:

Это значение 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

См. EDIT, это очень длинная строка, поэтому я отрезал ее, идея должна быть одинаковой. –

ответ

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

вопрос потому, что HTML в строку, которую вы эхо от PHP кодируется. Там нет родной функции 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 в смену htmlentities

$string = preg_replace("/\r|\n/", "", html_entity_decode($formcontent)); 
Смежные вопросы