JavaScript全局变量未定义的问题

时间:2011-11-04 22:12:39

标签: php javascript session variables global

我对JavaScript有些陌生,并且一直存在全局变量的问题。我有一个组ID,它是我的php会话变量的一部分,我想放入一个JavaScript全局变量,以便我可以访问JavaScript中的值。但JavaScript总是将变量显示为undefined,因此我必须做错事。简而言之,我有以下代码:

<head>
   <script type="text/javascript">var group = <?php echo($group)?>;</script>
</head>
<body>
<script type="text/javascript">
   function clicked() {
      alert(window.group);
   }
</script>

当弹出alert窗口时,它显示未定义,但我可以通过查看生成的源以及firebug来判断该值是在某一点设置给变量的。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

解决此类问题的最佳方法是在将php变量打印为JS变量时始终调用json_encode。在您的情况下,如果您的字符串包含换行符或引用

,则会失败
<script type="text/javascript">var group = <?php echo(json_encode($group)) ?>;</script>

答案 1 :(得分:0)

使用:

<script type="text/javascript">window.group = <?php echo($group)?>;</script>

答案 2 :(得分:0)

如果<?php echo($group) ?>的结果是字符串,那么您需要在script来源中添加引号,如下所示:

<script type="text/javascript">var group = '<?php echo($group)';</script>

您不需要使用window.group来分配它,因为它已经是变量的上下文。