我使用mysql
从php
数据库中提取数据并回显json_encoded
数组。
使用ajax我拉入结果并设置各种dom
元素的值。我有一个字符串,其中包含一些html标签,例如<p></p>
。
当我设置元素$("#element").html(data['text'])
时,它会在文本中添加双引号,并且所有html元素都显示为文本。
我似乎无法使用replace删除引号。奇怪的是,当我提醒值时,没有报价。它们只在我查看代码时出现在html中。
将html包含在文本中的最佳方法是什么?我如何让jquery
渲染它有html而不是文本?
非常感谢!
//Article by id
if(isset($_GET['do']) && $_GET['do']=='get_art') {
$content = array();
$id = clean_input($_GET['id']);
$q = "SELECT * FROM articles WHERE id = '$id'";
$r = $conn->query($q);
$row = $r->fetch_assoc();
$content['title'] = str_replace("€", '€', $row['title']);
$content['img'] = $row['img'];
$content['text'] = str_replace('€', '€', $row['text']);
$content['text'] = htmlentities($row['text']);
echo json_encode($content);
}
//end article by id
//load article onclick
$('body').on('click', '.get_art', function (e) {
e.preventDefault();
var href = $(this).attr('href').replace('#', ' ');
$.ajax({
url: 'actions.inc.php?do=get_art&id=' + href,
dataType: 'json',
type: 'post',
success: function(data) {
var art_text = data['text'];
art_text = art_text.replace('&euro;', '€');
$("#art_img").attr("src", "images/" + data['img']);
$("#art_title").html(data['title']);
$("#art_text").html($.parseHTML(art_text));
} //end success
});//end ajax
});
//end load
答案 0 :(得分:0)
htmlentities(php)乱七八糟的东西,我控制台记录了php文件的输出后现在正常工作