我的PHP和Javascript文件有一个奇怪的问题。我的数据库中有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时,只插入一个普通字符串。:
您会看到它被视为字符串。但我真的不明白为什么它会像这样。
编辑:
这是contentform值,我已经删除了一些,因为字符串很长,但实际值是一个有效的HTML字符串!:
<form class="form-horizontal" ><fieldset><!-- Form Name --><legend>DMN SGT</legend><!-- Multiple Radios --><div class="control-group"> <label class="control-label" for="multipleradios-0">Grund der Messebesuch</label> <div class="controls"> <label class="radio" for="multipleradios-0-0"> <input type="radio" name="multipleradios-0" id="multipleradios-0-0" value="Konkretes Interesse an Produkt" checked="checked">
答案 0 :(得分:2)
使用$.parseHTML作为示例
请参阅此示例:http://jsfiddle.net/kevalbhatt18/Lny2m0kc/1/ 的 的
的var t = $.parseHTML('<form class="form-horizontal" ><fieldset><!-- Form Name --><legend>DMN SGT</legend><!-- Multiple Radios --><div class="control-group"> <label class="control-label" for="multipleradios-0">Grund der Messebesuch</label> <div class="controls"> <label class="radio" for="multipleradios-0-0"> <input type="radio" name="multipleradios-0" id="multipleradios-0-0" value="Konkretes Interesse an Produkt" checked="checked">')
console.log(t);
$('#test').html(t[0].data)
的
答案 1 :(得分:1)
问题是因为您从PHP回显的字符串中的HTML被编码。没有本地JS函数来解码HTML,因此您需要提供自己的功能,如下所示:
function htmlDecode(value){
return String(value)
.replace(/"/g, '"')
.replace(/'/g, "'")
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/&/g, '&');
}
$('#currentform').html(htmlDecode(contentform));
答案 2 :(得分:1)
请尝试使用html_entity_decode代替htmlentities
$string = preg_replace( "/\r|\n/", "", html_entity_decode($formcontent) );