为什么这不起作用?
<?php
mysqli_select_db($connect,"dev");
$response = "Select response from revbut where session='$u'";
$rquery = mysqli_query($connect,$response);
$responseanswer = mysqli_fetch_array($rquery);
$re = $responseanswer['response'];
?>
<script type="text/javascript">
<?php echo $re; ?>
</script>
JavaScript 中的 $re
没有得到回显。但如果我将它放在上面的 PHP 函数中,它就会得到回显。
编辑 - 但为什么这不起作用?
if(<?php echo $re; ?>){
document.getElementById('hide').style.display = "none";
}
如果我将隐藏函数放在 if 之外 - 它正在工作。
它得到回显,但您不会在页面上看到任何内容,因为文本将写入 Javascript 标签内,而浏览器不会显示该标签。查看您的页面源代码以验证文本是否确实存在。
编辑
尝试
if(<?php echo json_encode($re); ?>){
document.getElementById('hide').style.display = "none";
}
这将确保您的 PHP 字符串将被转换为适当的 Javascript 类型 - 如果是字符串,它将确保字符串包含在
"
中并正确转义。
再次编辑
当您执行以下操作时
<script type="text/javascript">
if(<?php echo $re; ?>){
document.getElementById('hide').style.display = "none"; }
</script>
这是写入 HTML 页面的内容(然后由浏览器解释)
<script type="text/javascript">
if(whatever is in the $re variable){
document.getElementById('hide').style.display = "none"; }
</script>
但这甚至不是有效的 Javascript。你想要的是
<script type="text/javascript">
if("whatever is in the $re variable"){
document.getElementById('hide').style.display = "none"; }
</script>
注意
"
,它确保整个内容都是有效的 Javascript,并且 $re
的内容将被浏览器的 Javascript 引擎解释为 Javascript 字符串。对 json_encode()
的调用正是这样做的 - 它将 PHP 变量转换为适当的 Javascript 变量。
试试这个:
<script type="text/javascript">
alert('<?php echo $re; ?>');
</script>
首先,您不能假设所有与数据库相关的操作总是成功完成并且总是返回数据。打开 PHP 手册,查看所有 mysqli_* 函数调用并添加适当的测试来检测它们是否返回错误代码。
其次,PHP 和 JavaScript 不同时运行。 PHP 完成后,您得到的只是发送到浏览器的一些纯文本。如果该文本恰好是 JavaScript 代码,它将运行。您不必猜测:JavaScript 代码就在那里,您可以使用浏览器的“查看源代码”菜单来检查它。
查看源代码,它正在回显,尝试并确认
<script type="text/javascript">
alert('<?=$re; ?>');
</script>