在Javascript里面回应PHP?

sar*_*hak 9 javascript php echo

为什么这不起作用?

<?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>
Run Code Online (Sandbox Code Playgroud)

$re内部JavaScript没有得到回应.但是,如果我把它放在上面的PHP函数中,它就会得到回应.

编辑 - 但为什么这不起作用?

if(<?php echo $re; ?>){
    document.getElementById('hide').style.display = "none";
}
Run Code Online (Sandbox Code Playgroud)

如果我将隐藏功能置于if之外 - 它正在工作.

Ste*_*rig 15

它得到了回应,但您不会在页面上看到任何内容,因为文本将写在浏览器未显示的Javascript标记内.查看您的页面来源以验证文本是否真的存在.

编辑

尝试

if(<?php echo json_encode($re); ?>){
    document.getElementById('hide').style.display = "none"; 
}
Run Code Online (Sandbox Code Playgroud)

这将确保您的PHP字符串将转换为适当的Javascript类型 - 如果是字符串,它将确保字符串被包含在内"并正确转义.

再次编辑

当您执行以下操作时

<script type="text/javascript"> 
if(<?php echo $re; ?>){
    document.getElementById('hide').style.display = "none"; } 
</script>
Run Code Online (Sandbox Code Playgroud)

这是写入HTML页面的内容(然后由浏览器解释)

<script type="text/javascript"> 
if(whatever is in the $re vairable){
    document.getElementById('hide').style.display = "none"; } 
</script>
Run Code Online (Sandbox Code Playgroud)

但这甚至不是有效的Javascript.你想要的是什么

<script type="text/javascript"> 
if("whatever is in the $re vairable"){
    document.getElementById('hide').style.display = "none"; } 
</script>
Run Code Online (Sandbox Code Playgroud)

请注意,"这确保整个事物是有效的Javascript,并且$re浏览器的Javascript引擎将内容解释为Javascript字符串.调用就是json_encode()这样 - 它将PHP变量转换为适当的Javascript变量.


小智 5

试试这个:

<script type="text/javascript">
alert('<?php echo $re; ?>');
</script>
Run Code Online (Sandbox Code Playgroud)