2012-12-07 116 views
-1

我的JavaScript代碼看起來像它應該的那樣工作。但是,當我在Chrome中查看源代碼時,它不同意實際執行的JavaScript。源代碼中的JavaScript代碼並不反映實際執行的代碼

這裏是我的代碼:

<?php 
    $_SESSION['new'] = "blue"; 
    if (!isset($_SESSION['old'])) { $_SESSION['old'] = "blue"; } 
     echo '<script type="text/javascript"> 
      $(document).ready(function() { 
       changeCol("'.$_SESSION["old"].'","'.$_SESSION["new"].'"); 
      }); 
      </script>'; 
    $_SESSION['old'] = "blue"; 
?>  

$_SESSION['old']="green"從以前的頁面。代碼應該調用changeCol("green","blue"),然後設置$_SESSION['old']="blue"

事實上,這兩個事情發生,所以我的代碼工作,因爲它的設計,如果我查看源代碼,它說:changeCol("blue","blue")。這很奇怪,因爲如果在changeCol()中我將傳入的變量寫入console.log,我會得到green, blue

所以,如果它叫changeCol(green,blue)爲什麼說changeCol(blue,blue)當我查看源?

+3

js在PHP之前...它不可能.... php是服務器端,js是客戶端 –

+6

當您查看源代碼時,您的瀏覽器可能會再次請求該頁面,因此您將獲得全新的頁面新的會話值。 –

+2

你叫過session_start()嗎? – blackbourna

回答

12

當您查看源代碼時,您可能正在提出額外的請求。您的會話變量將被重置。

如果您使用的是Chrome或Firefox - 您應該是 - 您可以打開Web Developer Tools或Firebug並檢查實際的DOM樹。 (在腳本動態添加內容的情況下,這也非常有用。)

+0

從我的經驗來看,這絕對是正確的答案。 –

+1

查看源代碼請求?在哪些瀏覽器? –

+0

@甜菜根 - 甜菜根鉻,顯然! – Jeff

1

您是否在第二頁包含<?php session_start(); ?>

+1

如果他沒有,那麼$ _SESSION變量的工作效果會如何呢? :P –

+1

如果沒有session_start,php會創建一個名爲'$ _SESSION'的新數組。 '$ _SESSION ['old']'總是會被設置爲藍色。如果是這樣的話 –