为什么这不起作用?
<?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之外 - 它正在工作。
答案 0 :(得分:15)
它得到回应,但您不会在页面上看到任何内容,因为文本将写在浏览器未显示的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 vairable){
document.getElementById('hide').style.display = "none"; }
</script>
但这甚至不是有效的Javascript。你想要的是
<script type="text/javascript">
if("whatever is in the $re vairable"){
document.getElementById('hide').style.display = "none"; }
</script>
注意"
确保整个事物是有效的Javascript,并且$re
的内容将被浏览器的Javascript引擎解释为Javascript字符串。对json_encode()
的调用就是这样 - 它将PHP变量转换为适当的Javascript变量。
答案 1 :(得分:5)
试试这个:
<script type="text/javascript">
alert('<?php echo $re; ?>');
</script>
答案 2 :(得分:1)
首先,您不能假设所有与数据库相关的操作总是成功完成并始终返回数据。打开PHP手册,查看所有mysqli_ *函数调用并添加适当的测试以检测它们是否返回错误代码。
其次,PHP和JavaScript不会同时运行。 PHP完成后,你得到的是一些发送到浏览器的纯文本。如果该文本恰好是JavaScript代码,则将运行该代码。而且您不必猜测:JavaScript代码就在那里,您可以使用浏览器的“查看源”菜单进行检查。
答案 3 :(得分:0)
查看源它是回声尝试并确认
<script type="text/javascript">
alert('<?=$re; ?>');
</script>