javascript - 为什么 json_encode 必须出现在 php 文件中而不是出现在外部 javascript 文件中?

标签 javascript php arrays json

我有一个 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/

相关文章:

javascript - 客户端图像压缩

php - 查询语句中sql_mode=only_full_group_by

Javascript - 如何快速构造不同正整数数组的二进制表示

c - 指向数组类型的指针(自定义类型)

javascript - 弹出窗口在 asp.net 和 vb.net 网页上不起作用

javascript - 具有必需属性的vuejs-datepicker被提交但没有值(value)

javascript - 在公共(public)站点中使用所有 AJAX 进行服务器调用是否存在问题?

php - 插入特殊字符/PHP + MySql + Android

PHP & MySQL(i) : How to generate a random user id?

ios - 将字符串转换为数组项