2013-03-01 64 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 ..

相關問題