Using PHP in <script> tag?


Using PHP in <script> tag?

我试图在javascript中创建一个PHP对象。这是我的脚本:

    <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,如何解决这个问题?

谢谢

您忘记关闭.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>

正如注释所说,您应该考虑使用(php函数)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"}
]

echo json_encode($a)就会输出这样的结果

您的函数没有正确关闭:

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

This:

<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++。