JavaScript全局变量未定义问题


JavaScript global variable undefined issue

我对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来判断该值在某一点上被设置为变量。

我做错了什么?

这种问题的最佳解决方案是在将php变量打印为JS变量时始终调用json_encode。在您的示例中,如果字符串包含换行符或引号

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

use:

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

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

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

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