【问题标题】:Using PHP in <script> tag?在 <script> 标签中使用 PHP?
【发布时间】:2012-01-08 18:16:06
【问题描述】:

我正在尝试使用 PHP 在 javascript 中创建一个对象。这是我的脚本:

    <script>
        $(document).ready(function(){
            var genres = [
    <?php
    $last = count($userGenres) - 1;
    $i = 0;
    foreach($userGenres as $a){
        $i++;
        echo '{"value":"'.$a['genre'].'", "name":"'.$a['name'].'"}';
        if($i < $last){
            echo ',';
        }
    }
    ?>
                        ];
   });
</script>

当我检查生成的源代码时,它会创建一个有效的对象,但该标签中的整个脚本现在不起作用。如果没有 JSON,如何解决这个问题?

谢谢

【问题讨论】:

  • 你没有关闭$(document).ready()函数。
  • 究竟是什么不起作用?有什么问题?
  • 这段代码托管在哪里?我猜是在 PHP 文件中?
  • 你知道PHP中的json_encode()函数吗?
  • 你应该真的使用json_encode。否则你的代码会很脆弱。

标签: php javascript json object


【解决方案1】:

正如评论所说,您应该考虑使用 (php function)json_encode 代替,这将变成...

php:

$a = array(
  array("gender"=> "male", "name"=> "Bob"),
  array("gender"=> "female", "name"=> "Annie")
);

Into json:
[
   {gender:"male", name:"Bob"},
   {gender:"female", name:"Annie"}
]

回显 json_encode($a) 会像这样输出它。

【讨论】:

    【解决方案2】:

    这个:

    <script>
        $(document).ready(function(){
            var genres = [
                <?php
                $last = count($userGenres) - 1;
                $i = 0;
                foreach($userGenres as $a)
                {
                    echo '{"value":"'.$a['genre'].'", "name":"'.$a['name'].'"}';
                    if($i < $last)
                    {
                        echo ',';
                    }
    
                    $i++;
                }
                ?>
            ];
        });
    </script>
    

    更改:您必须关闭匿名函数和 ready() 方法。此外,将 i++ 移到最后,以便涵盖所有情况(您将丢失一个)。你得到的错误是因为你的 i++ 错误。

    【讨论】:

      【解决方案3】:

      你的函数没有正确关闭:

      }
          }
          ?>
                              ];
      }); // <--- add this
      </script>
      

      【讨论】:

        【解决方案4】:

        您忘记关闭 .ready() 方法和其中的匿名函数。

        试试这个:

        <script>
            $(document).ready(function(){
                var genres = [
                    <?php
                    $last = count($userGenres) - 1;
                    $i = 0;
                    foreach($userGenres as $a)
                    {
                        $i++;
                        echo '{"value":"'.$a['genre'].'", "name":"'.$a['name'].'"}';
                        if($i < $last)
                        {
                            echo ',';
                        }
                    }
                    ?>
                ];
            });
        </script>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-24
          • 1970-01-01
          • 2015-06-07
          • 1970-01-01
          • 2014-01-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多