Use json_encode()。如果不这样做,当数据从 PHP 传递到 HTML/JS 层时,您总是有可能错误地转义数据。
$vars = array($lat, $lang, $zoom);
// JSON_HEX_TAG and JSON_HEX_AMP are to remove all possible surprises that could be
// caused by vars that contain '</script>' or '&' in them. The rules for
// escaping/encoding inside script elements are complex and vary depending
// on how the document is parsed.
$jsvars = json_encode($vars, JSON_HEX_TAG | JSON_HEX_AMP);
echo "<script>initialize.apply(null, $jsvars)</script>";
一般来说,为了您的理智,您需要提供给当前页面上运行的 js 使用的所有 PHP 数据都应该收集到单个 PHP 数组中,然后放入单个 js 对象中。例如:
<?php
$jsdata = array(
'formvars' => array(
'lat' => $lat,
'lang' => $lang,
'zoom' => $zoom
),
'username' => $username,
'some_other_data' => $more stuff
);
?>
<script>
var JSDATA = <?=json_encode($jsdata, JSON_HEX_TAG | JSON_HEX_AMP )?>;
initialize(JSDATA.formvars.lat, JSDATA.formvars.lang, JSDATA.formvars.zoom);
</script>
现在,JS 和 PHP/HTML 层之间只有一个接触点,因此您可以轻松跟踪放入 JS 命名空间的内容。