一尘不染

将PHP变量传递给Javascript的最佳方法是什么?

php

目前,我在隐藏的输入字段中回显某些变量,并在需要时使用Javascript读取它们。

我和一个同事现在正在考虑使用PHP生成一个额外的Javascript文件,该文件仅包含Javascript的所有变量。这样,变量已经存在,HTML中没有多余的代码。

有什么好的方法可以将变量从PHP传递到Javascript?我们的解决方案听起来如何?


阅读 203

收藏
2020-05-29

共1个答案

一尘不染

通用数据传递

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>
2020-05-29