[英]PHP json to a JavaScript variable inside an HTML file
我编写了以下脚本,为当前文件夹下的所有图像创建了一个漂亮的 JSON:
<?php
header('Content-type: application/json');
$output = new stdClass();
$pattern="/^.*\.(jpg|jpeg|png|gif)$/i"; //valid image extensions
$dirs = array_filter(glob('*'), 'is_dir');
foreach ($dirs as $dirname) {
$files = glob(''.$dirname.'/*');
$images = preg_grep($pattern, $files);
$output->{$dirname} = $images;
}
echo json_encode($output, JSON_PRETTY_PRINT);
?>
我有一个带有基本页面的 HTML 文件,我想在一些 javascript 操作后以格式化的方式显示 JSON 的数据。
所以问题是如何将 PHP 数据放入 javascript 变量中?
<html>
...
<body>
<script src="images.php"></script>
<script type="text/javascript">
// Desired: Get access to JSON $output
</script>
...
<div>
<img ... >
</div>
</body>
</html>
我试图将https://stackoverflow.com/a/61212271/1692261和https://stackoverflow.com/a/50801851/1692261都放在那个脚本标签中,所以我猜想它们里面没有一些基本的东西在这里(我第一次体验 PHP :)
您应该专注于需要做的事情,但目前您正在尝试实施自己的想法。 也许你应该改变你的方法并以另一种方式做你想做的事? 将 php 变量传递给 js 是可能的。 但是你为什么需要这个 json? 如果您想使用它来生成 html(fe 向用户显示图像),您可以在没有 js 的纯 php 上执行此操作。 如果您确实需要 json 您可以使用 php 生成 json 文件,并通过额外的 js 请求获取此文件。 但最简单的方法是
// below php code that generates json with images
$images = json_encode($output, JSON_PRETTY_PRINT);
...
// php code but in html template
<script type="text/javascript">
var images = "<?= $images ?>";
</script>
我不能保证这条 js 行会起作用,但你明白了)
PS您不需要为此目的使用stdClass。 我们通过 arrays 来实现(在你的情况下它将是关联数组),arrays 在 php 中非常强大。 json_encode() 将从数组或 object 生成相同的 json。 但是如果这部分代码工作正常,让它保持原样
我接受了@Zeusarm 的建议,只使用了 ajax (和 jquery)。
对于其他需要参考的人:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
将 jquery 添加到 HTML 文件中 <script type="text/javascript">
var images = ''
$.get('images.php',function (jsondata) {
images = jsondata
});
我确信这不是最干净的代码,但它可以工作:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.