我正在使用php和js编写幻灯片。目前我正在通过我的php文档开头的scandir()读取图像并将数组解析为我的javascript。
<?php
$dir = 'images';
$data = scandir($dir, 1);
$dirdata = array_slice($data, 0, count($data)-2);
?>
<script>
var data = <?php echo json_encode($dirdata, JSON_HEX_TAG); ?>;
set_data(data);
</script>
set_data()是我的javascript中的一个函数,用于更新幻灯片中显示的数组。
现在我想每5秒运行一次这段代码来更新我的图像数组,以便添加到目录中的新图像被添加到幻灯片中。 我的问题是我不知道如何在一个intervall中执行代码的两个部分。我可以使用超时来计算javascript部分或php事件队列以循环该部分。
有没有办法可以巧妙地做到这两点?或者甚至更容易解决我的问题?
编辑: 我之前从未使用过AJAX,所以现在我查了一遍并试了一下。 现在我有一个脚本:
<script>
function update_data() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var data = <?php echo json_encode(xmlhttp.responseText, JSON_HEX_TAG); ?>;
set_data(data);
}
};
xmlhttp.open("GET", "update_dir.php", true);
xmlhttp.send();
}
var d_timer = setInterval("update_data()",5000);
</script>
update_dir.php包含:
<?php
$dir = 'images';
$data = scandir($dir, 1);
$dirdata = array_slice($data, 0, count($data)-2);
echo $dirdata;
?>
它仍然不起作用。其中一方面是我在内部php环境中引用的js变量。显然这不起作用。但是什么方法可以让它发挥作用?