3

我将 PHP 变量传递给 Javascript,但仅在代码中的特定点。随着 PHP 代码的继续,我需要的变量会发生变化。当页面加载完成时,我可以轻松地运行 Javascript 并获取 PHP 变量,但这不会传递我想要的信息。我希望 Javascript 在那时获取 PHP 变量,然后忽略对它的后续更改。

我正在使用的实际程序是几千行代码,所以我创建了一个简单的页面来解决这个问题。下面的代码显示了我正在尝试做的事情。

<?php
$php_var = 'something';
if(true) {
    $php_var = 'new';
    echo ' 
        <script type="text/javascript"> 
            js_var="<?php echo $php_var; ?>"; 
            alert(js_var);
        </script>
    ';
}
$php_var = 'later changes';
?>

<script type="text/javascript">
    var js_var;
</script>

然而,这不起作用。js_var 在内联脚本运行时设置,但它只是设置为一个字符串,<?php echo $php_var; ?>而不是实际评估它。

4

2 回答 2

2

PHP 首先运行,然后运行任何发送到浏览器的 JS。我想你只是想要这个:

echo '<script type="text/javascript">
    js_var = '.json_encode($php_var).';
    alert(js_var);
</script>';
于 2013-03-27T00:59:30.200 回答
1
$php_var = "foo";
echo ' 
    <script> 
        var js_var = '. json_encode($php_var) .'; 
        alert(js_var);
    </script>
';

产生:

<script>
var js_var = "foo";
alert(js_var);
</script>
于 2013-03-27T00:59:58.940 回答