在Javascript里面回应PHP?

时间:2010-12-28 08:19:37

标签: php javascript 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>
JavaScript中的

$re没有得到回应。但是如果我将它放在上面的PHP函数中,它就会得到回应。

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

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

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

4 个答案:

答案 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>