【问题标题】:How can I pass a PHP variable to javascript?如何将 PHP 变量传递给 javascript?
【发布时间】:2011-04-09 03:39:06
【问题描述】:

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

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

这似乎对我有用,但没有人能提出更好的方法吗?

【问题讨论】:

标签: php javascript session parameter-passing


【解决方案1】:

您似乎在echo 调用中打开了一个括号,但没有关闭它。 此外,您应该在其后放置一个分号。您还忘记了引号(正如 Gordon 在下面的评论中所说)。

<?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?>";

【讨论】:

  • 有趣的是,尽管它错过了 php 块周围的引号并使用速记语法(widely regarded as bad practise)做广告,但人们对这个答案的支持率最高。
  • 我不知道使用速记语法是不好的...感谢链接。你对引号是对的......我已经改变了它。我真的不知道为什么我忘记了他们......
【解决方案2】:

我能想到的最好的方法是这样的:

<?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-value 括起来以防止语法错误。注意逃跑!

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

【讨论】:

  • +1 表示json_encode。这就是它的用途。永远不要使用 raw-echo 版本。您冒着错误和 XSS 安全漏洞的风险。
  • “注意逃跑!”是什么意思?您的代码示例中似乎没有逃避任何内容....?谢谢!
  • @JDelage:我的第一个示例正确地转义了所有内容(这就是json_encode() 在序列化时所做的)。第二个例子没有。这就是为什么我建议使用第一种技术。第二种技术仅在处理已经转义的值或不可能导致无效 JavaScript 的值时才可用,但使用起来确实没有多大意义,因为第一种涵盖了所有情况。
【解决方案3】:

它不起作用,因为您的 sn-p 包含错误,它应该是:

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

【讨论】:

    【解决方案4】:

    没关系。确保如果您要回显的变量是一个字符串,您在它周围加上引号并转义其中的任何引号、换行符等——例如,确保它确实作为有效的 JavaScript 字符串文字得到输出。另外,不要忘记var 之前的js_var

    【讨论】:

      猜你喜欢
      • 2019-07-07
      • 2017-04-29
      • 2011-09-27
      相关资源
      最近更新 更多