我目前在隐藏的输入字段中回显某些变量,并在需要时用 Javascript 读出它们。
我和一位同事现在正在考虑用 PHP 生成一个额外的 Javascript 文件,其中只包含 Javascript 的所有变量。这样,变量已经存在并且 HTML 中没有额外的代码。
将变量从 PHP 传递到 Javascript 的好方法是什么?我们的解决方案听起来如何?
我目前在隐藏的输入字段中回显某些变量,并在需要时用 Javascript 读出它们。
我和一位同事现在正在考虑用 PHP 生成一个额外的 Javascript 文件,其中只包含 Javascript 的所有变量。这样,变量已经存在并且 HTML 中没有额外的代码。
将变量从 PHP 传递到 Javascript 的好方法是什么?我们的解决方案听起来如何?
JavaScript 常用的交换格式是JSON,使用json_encode
. 一个像这样的 PHP 文件:
<?php
$data = array("test" => "var", "intvalue" => 1);
echo json_encode($data);
?>
然后像这样返回一个 JavaScript 对象文字:
{
"test" : "var",
"intvalue" : 1
}
您可以直接将其回显到页面上的 JavaScript 变量中,例如:
var data = <?php echo json_encode($data)?>;
...或通过 Ajax 请求(例如使用jQuery 的 getJSON)。
如果您只需要将字符串输出到标签上的属性,请使用htmlspecialchars
. 假设一个变量:
<?php
$nifty = "I'm the nifty attribute value with both \"double\" and 'single' quotes in it.";
?>
...你可以这样输出:
<div data-nifty-attr="<?php echo htmlspecialchars($nifty)?>">...</div>
...或者如果您使用短标签:
<div data-nifty-attr="<?= htmlspecialchars($nifty)?>">...</div>
<?php
$my_php_var = array(..... big, complex structure.....);
?>
<script type="text/javascript">
my_js_var = <?=json_encode ($my_php_var)?>;
</script>
我过去常常在 HTML 的开头将它们全部回显。看起来足够干净满足我的需要:)
有 3 种方法可以做到:
<?echo "var user = '$user';";?>
。有效,但很乱。