每隔x秒用php的scandir()读一个目录

时间:2018-04-21 10:33:28

标签: javascript php html slideshow

我正在使用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变量。显然这不起作用。但是什么方法可以让它发挥作用?

0 个答案:

没有答案