2013-03-01 63 views
-3

内部定义的代码:可以PHP变量一个JavaScript代码

if(4 > 1) { 
    alert('ok'); 
    <?php $mode = true;?> 
} else { 
    alert('not-ok'); 
    <?php $mode = false;?>  
} 
var_dump($mode); 

这提醒OK,但var_damp()显示bool(false)

为什么的var_dump表明$模式是假的?

+2

PHP是在服务器上执行JavaScript的浏览器 – mensi 2013-03-01 13:06:34

+1

我不认为你了解PHP是如何执行。 – crush 2013-03-01 13:06:59

回答

0

PHP - 服务器端 - 浏览器没有得到看,也没有Javascript。

所以给出的代码会在处理完PHP后传递给浏览器。

3

您在服务器端代码与客户端代码混淆。 PHP不会继续在浏览器中解释。当任何东西到达浏览器(解释JavaScript代码)时,PHP就会被处理并完成。

所以基本上你正在做的PHP是这样的:

$mode = true; 
$mode = false; 
var_dump($mode); 

其中,自然会显示false。那么,这样做了以后执行,你这个渲染的浏览器:

if(4>1){ 
    alert('ok'); 
} else { 
    alert('not-ok'); 
} 

其中,自然也alert('ok')

您可以将服务器端代码和客户端代码视为两个完全不同的应用程序上下文。确实,它们是。服务器端应用程序只是返回一个页面,它不关心页面上的内容或页面发生了什么。客户端应用程序是呈现给浏览器和其中的任何代码(本例中为JavaScript)的内容。它并不关心服务器是如何生成的,甚至不知道使用了哪种服务器端语言(PHP,ASP,Java等),它只是在浏览器中完成它的工作。

1

在将页面发送到浏览器之前,PHP代码在服务器上执行。此时,将执行代码块:$mode = true;$mode = false;,并且最终值$mode将为假,因此var_dump($mode)将打印bool|(false)。发送到浏览器的页面将包含以下代码:

if(4>1){ 

     alert('ok'); 


    } else { 
     alert('not-ok'); 

    } 

你的PHP块没有打印任何东西,所以他们只会变成什么。浏览器将执行此代码并在其中显示ok

0

因为在php完成渲染页面后,你不能分配任何新的php变量。如果你确实想要做这样的事情,你可能不得不使用AJAX。

0

您将使用此代码得到结果..

<?php

echo "<script type='text/javascript'>";

if(4>1){ 

    echo "alert('ok')"; 
    $mode = true; 

}

else { 
    echo "alert('ok')"; 
    $mode = false; 
} 

echo "</script>";

var_dump ($mode);

?>

您可以编写PHP脚本中的JavaScript ..

相关问题