目前,我在隐藏的输入字段中回显某些变量,并在需要时使用Javascript读取它们。
我和一个同事现在正在考虑使用PHP生成一个额外的Javascript文件,该文件仅包含Javascript的所有变量。这样,变量已经存在,HTML中没有多余的代码。
有什么好的方法可以将变量从PHP传递到Javascript?我们的解决方案听起来如何?
JavaScript常用的交换格式是JSON,使用json_encode。这样的PHP文件:
json_encode
<?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。假设一个变量:
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>