我有一个 php 数组:
$x = array("1","2","3");
我还有 javascript 代码将 php 数组转换为 javascript 数组:
var x = <?php echo json_encode($x) ?>;
当我在index.php 文件中输入此内容时,它工作得很好(即 - 我可以在任何其他 javascript 文件中使用该数组):
<script type="text/javascript"> var x = <?php echo json_encode($x) ?>; </script>
但是当我这样做时它不起作用:
<script type="text/javascript" src="file.js"></script>
file.js 包含:
var x = <?php echo json_encode($x) ?>;
我只是不明白为什么会这样,知道为什么吗?提前致谢。
最佳答案
外部 JS 文件不是 PHP 文件。它们不会被 PHP 解析器(Web 服务器)解析。
要在外部 JS 文件中“启用”PHP 标签,您可以将其命名为 script.js.php
(以 .php
结尾),示例内容如下:
<?php
header('Content-Type: text/javascript');
?>
var x = <?php echo json_encode($x) ?>;
并导入它:
<script type="text/javascript" src="script.js.php"></script>
<小时/>
除了使用上面的方法之外,这里还有另一种“合并”JS 和 PHP 的方法,方法比较巧妙:
外部 PHP 文件中的内容(假设文件名为 method2.inc.php
):
<script type="text/javascript">
var x = <?php echo json_encode($x) ?>;
</script>
而不是使用 <script>
标签将其包含到原始 PHP 文件中,您使用:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Method 2</title>
<?php require_once('method2.inc.php'); ?>
</head>
<body>
<-- body goes here -->
</body>
</html>
注意:文件名可以自由更改,只要其文件扩展名是 .php
.
关于javascript - 为什么 json_encode 必须出现在 php 文件中而不是出现在外部 javascript 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188121/