在JavaScript中访问PHP变量

sah*_*hil 36 javascript php

可能重复:
如何在JavaScript或jQuery中访问PHP变量而不是<?php echo $ variable?>

有没有办法在JavaScript中访问PHP变量?

我有一个变量,$a在PHP中,想要在JavaScript变量中获取它的值.

met*_*ras 83

你不能,你必须做类似的事情

<script type="text/javascript">
   var php_var = "<?php echo $php_var; ?>";
</script>
Run Code Online (Sandbox Code Playgroud)

您也可以使用AJAX加载它

犀牛是对的,为简洁起见,片段缺乏一种类型.

另请注意,如果$php_var有引号,则会破坏您的脚本.您应使用addslashes,htmlentities或自定义函数.

  • @stillstanding:我不会像实际的规格那样信任W3Schools.请参阅http://www.w3.org/TR/html5/scripting-1.html#script - type属性提供脚本的语言或数据格式....如果属性不存在,则使用默认值"text/javascript". (4认同)
  • @stillstanding:具体一点:W3C说明在哪里?HTML5中不需要它. (3认同)
  • rhino 是正确的,json_encode 会转义变量。 (2认同)
  • W3C声明必须为文档中的每个SCRIPT元素实例指定type属性 (2认同)

rhi*_*ino 43

metrobalderas部分正确.部分地,因为PHP变量的值可能包含一些特殊字符,这些字符是JavaScript中的元字符.要避免此类问题,请使用以下代码:

<script type="text/javascript">
var something=<?php echo json_encode($a); ?>;
</script>
Run Code Online (Sandbox Code Playgroud)

  • +1.经过测试,json_encode _does_引用和转义字符串正确. (5认同)

yit*_*ton 5

我不确定这是多么必要,它添加了对 的调用getElementById,但是如果您真的很想从代码中获取内联 JavaScript,则可以将其作为 HTML 属性传递,即:

<span class="metadata" id="metadata-size-of-widget" title="<?php echo json_encode($size_of_widget) ?>"></span>
Run Code Online (Sandbox Code Playgroud)

然后在你的 JavaScript 中:

var size_of_widget = document.getElementById("metadata-size-of-widget").title;
Run Code Online (Sandbox Code Playgroud)