如何在JS脚本中正确地回显PHP变量

How to properly echo PHP variables within JS script?

本文关键字:PHP 变量 正确地 JS 脚本      更新时间:2023-09-26

我有一个需要打印的脚本,它在一个PHP文件中,因为我使用的是jQuery UI选项卡插件,所以我需要给它传递选项。

这是我所拥有的:

<?php 
$collapsible = "true";
$active = "2";
$options = array( 'collapsible' => $collapsible, 'active' => $active );
?>
    <script type="text/javascript">
        jQuery(document).ready(function() {
            jQuery( '.tabs' ).tabs({
                collapsible : <?php echo $options["collapsible"]; ?>,
                active : <?php echo $options["active"]; ?>
            });
        });
    </script>

好的,所以一切都可以,但可折叠和活动这两个选项并没有影响它。但如果我绕过php变量,只硬编码可折叠和活跃的选项设置,那么它就可以工作了。所以我不知道为什么这些变量没有效果。我甚至试过用(int)表示活动,用(bool)表示可折叠,但仍然没有骰子。

谢谢你的光临。

通过json_encode运行值,而不是添加引号。这也将确保正确的逃生:

<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery( '.tabs' ).tabs({
            collapsible : <?php echo json_encode($options["collapsible"]) ?>,
            active : <?php echo json_encode($options["active"]) ?>'
        });
    });
</script>

它还为您提供了额外的好处,即能够使用文字类型,而不是PHP中的所有字符串:

<?php
$collapsible = true;
$active = 2;

而且,根据axel.michel在评论中的建议,可以简化为:

<?php
$options = array('collapsible' => true, 'active' => 2);
?>
<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery( '.tabs' ).tabs(<?php echo json_encode($options); ?>);
    });
</script>

尝试在值周围添加引号并对输出进行编码

<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery( '.tabs' ).tabs({
            collapsible : '<?php echo $options["collapsible"] ); ?>',
            active : '<?php echo $options["active"] ); ?>'
        });
    });
</script>