从 mysql 获取数据时,html 标记按原样显示
Posted
技术标签:
【中文标题】从 mysql 获取数据时,html 标记按原样显示【英文标题】:html tags are displaying as it is when getting data from mysql 【发布时间】:2018-03-23 00:23:39 【问题描述】:我使用编辑器在 mysql 表中存储了一些 html 代码。它包含youtube视频的嵌入代码,因此mysql列中的条目是这样的
This is a hello text. <iframe src="https://www.youtube.com/embed/zAlX1V3lK5s"> </iframe><br>
我正在做一个 jquery get 调用来从 mysql 获取这些数据,我使用的代码是
$.get(
'test.php',
function(response)
console.log(response);
$('#test').html(response);
);
获取结果的php代码是
mysql_connect("localhost", 'root', 'root');
mysql_select_db("dummy");
$rs = mysql_query("select dummy from demotable where id = xyz");
$r = mysql_fetch_array($rs);
echo $r['dummy']; //contains that string which includes iframe too
但是当我将结果显示到 div 时,它不会在那里显示视频,而是显示字符串,因为它是我在前端 div 上得到的输出是
This is a strong beer. <iframe src="https://www.youtube.com/embed/zAlX1V3lK5s"> </iframe><br>
我怎样才能在那里获取视频而不是显示源?
【问题讨论】:
mysql_*
自 php-5.5 起已弃用。所以改为使用mysqli_*
或PDO
。 Why shouldn't I use mysql_* functions in PHP?
这只是一个例子,我正在使用 cake php 来做这件事,但它仍然显示字符串,而不是将嵌入代码转换为视频
【参考方案1】:
你需要把<div>
标签也写成:
echo '<div>'.$r['dummy'].'</div>';
【讨论】:
这个问题只存在于 iframe,图像显示正确。【参考方案2】:所以我终于找到了解决方案。我只需要用 jquery 做一个小的调整。看看下面的代码
$.get(
'test.php',
function(response)
var res = $('<div/>').html(response).text();
$('#test').html(response);
);
它将解码 html 并且 iframe 将在那里。
【讨论】:
【参考方案3】:我认为您需要强制加载 iframe。根据What’s the best way to reload / refresh an iframe?,这可以用这样的javascript来实现:
document.getElementById('some_frame_id').contentWindow.location.reload();
但在 jquery 中可能看起来像这样:
$('#test').find('iframe')[0].contentWindow.location.reload();
试试看:)
【讨论】:
这并不能解决问题。 标签也按原样显示,它应该在那里换行。所以这与php的变量有关。因为如果直接这样放 $('#test').html('This is a text. 这个问题只存在于 iframe,图像显示正确。以上是关于从 mysql 获取数据时,html 标记按原样显示的主要内容,如果未能解决你的问题,请参考以下文章