如何将PHP变量传递给javascript?

时间:2010-09-07 11:00:38

标签: php javascript session parameter-passing

我想使用PHP变量作为javascript变量 - 特别是我想用PHP变量session_id();并将其用作javascript变量。

<?php
$php_var = session_id();
?>
<script language="JavaScript" type="text/javascript">
js_var = <?php echo($php_var ?>;
</script>

这似乎应该对我有用,但它不能有人建议更好的方法吗?

4 个答案:

答案 0 :(得分:13)

我能想到的最佳方法如下:

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

PHP的json_encode - 函数始终生成有效的JavaScript,如果您只是输出随机值,则无法确保这一点。如果您决定不使用json_encode(),则至少应使用引号括起php值以防止语法错误。请注意逃避!

<?php
$php_var = session_id();
?>
<script type="text/javascript">
   var js_var = "<?php echo $php_var; ?>";
</script>

答案 1 :(得分:3)

那很好。确保如果您正在回显的变量是一个字符串,您在其中放置引号并转义其中的任何引号,换行符等 - 例如,确保它确实输出为有效的JavaScript字符串文字。另外,请不要忘记var之前的js_var

答案 2 :(得分:2)

您似乎已在echo来电中打开了一个括号,但未关闭它。 此外,你应该在它后面加一个分号。你也忘记了引号(正如戈登在下面的评论中所说的那样)。

<?php
$php_var = session_id();
?>
<script language="JavaScript" type="text/javascript">
js_var = "<?php echo($php_var); ?>";
</script>

P.S.您可以使用'='字符替换echo来使用更少的代码:

js_var="<?=$php_var?>";

答案 3 :(得分:1)

它不起作用,因为您的代码段包含错误,应该是:

<?php
$php_var = session_id();
?>
<script language="JavaScript" type="text/javascript">
js_var = <?php echo $php_var ?>;
</script>