2012-12-07 85 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']'总是会被设置为蓝色。如果是这样的话 –