【问题标题】:JavaScript global variable undefined issueJavaScript全局变量未定义问题
【发布时间】:2011-12-22 09:52:43
【问题描述】:

我对 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 窗口弹出时,它显示未定义,但我可以通过查看生成的源以及萤火虫来判断该值在某一时刻被设置为变量。

我做错了什么?

【问题讨论】:

  • 值是字符串吗?需要var group = '&lt;?pgp echo($group)?&gt;';吗?
  • 这就是问题所在!谢谢马特!
  • 顺便说一句,你想避免全局变量!

标签: php javascript session variables global


【解决方案1】:

使用:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多