将PHPvariables传递给Javascript的最佳方式是什么?
我目前在隐藏的input字段中回显某些variables,并在需要时用Javascript读出它们。
我和一个同事现在正在考虑用PHP生成一个额外的Javascript文件,其中只包含所有的Javascriptvariables。 这样,variables已经存在,并且在HTML中没有额外的代码。
将variables从PHP传递给Javascript的好方法是什么? 我们的解决scheme听起来如何?
一般数据传递
JSON是一种常用的JavaScript交换格式,使用json_encode
。 一个像这样的PHP文件:
<?php $data = array("test" => "var", "intvalue" => 1); echo json_encode($data); ?>
然后返回一个像这样的JavaScript对象字面值:
{ "test" : "var", "intvalue" : 1 }
您可以直接将其回显到页面上的JavaScriptvariables中,例如:
var data = <?php echo json_encode($data)?>;
…或通过Ajax请求(例如使用jQuery的getJSON )。
输出到标签上的属性
如果你只需要输出一个string到一个标签的属性,使用htmlspecialchars
。 假设一个variables:
<?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的头部一起回显它们。 似乎足够干净,我的需要:)
有三种方法可以做到这一点:
- 将它们直接回复到javascript源代码中:
<?echo "var user = '$user';";?>
。 工程,但它是凌乱的。 - 通过ajax请求传入。 这是最接近本地variables传递,但缺点是它需要一个额外的HTTP请求。
- 你正在做什么,通过生成隐藏的表单字段,然后阅读它们来传递它们。