我目前在隐藏的输入字段中回显某些变量,并在需要时用Javascript读取它们。
我和一位同事正在考虑用PHP生成一个额外的Javascript文件,该文件只包含Javascript的所有变量。这种方式变量已经存在,HTML中没有额外的代码。
将变量从PHP传递到Javascript有什么好方法?我们的解决方案如何发声?
答案 0 :(得分:25)
常用的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's 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>
答案 1 :(得分:5)
<?php
$my_php_var = array(..... big, complex structure.....);
?>
<script type="text/javascript">
my_js_var = <?=json_encode ($my_php_var)?>;
</script>
答案 2 :(得分:3)
我用它在HTML的头部回显它们。看起来足够干净以满足我的需求:)
答案 3 :(得分:2)
有三种方法可以做到:
<?echo "var user = '$user';";?>
。工作,但它很乱。