如何 运行 php 在 javascript timer/loop 中编码

How to run php code in javascript timer/loop

我用幻灯片制作了一个简单的页面,想在 JS 计时器循环时每 5 秒加载一次。

我添加了描述问题所在的注释。 PHP 仅在页面加载时扫描目录,不会在计时器中注意到文件夹中的更改。

代码如下:

<script type="text/javascript">
    ......
    var main_timer = setInterval(function(){slideTimer()}, 5000);
    ......
    function slideTimer() {
    ......    
        <?php
            //This PHP code need to be looped inside the timer
            $array = array();
            $array = array_slice(scandir('strony'), 2);
            $js_array = json_encode($array);
        ?>
        ........
        pages = <?php echo $js_array; ?>;
        ........
        ........    
    }
</script>

在这里你必须了解服务器端脚本客户端脚本的概念。

  • Java script 是一种客户端脚本语言。

  • PHP 是服务器端语言。

为了执行服务器端语言,您必须在服务器中执行代码,PHP 可以解释它。

在您的情况下,您试图在 javascript 中循环客户端脚本并在客户端脚本中添加 PHP 代码。

需要注意的是,当web服务器呈现整个页面时,PHP脚本已经执行,所以循环javascript中的PHP代码不会再次解释它因为客户端(您的浏览器)没有内置 PHP 解释器。

解决方案

来自 javascript 的计时器应该使用 AJAX 在服务器中调用一个方法,然后在您的服务器端 ajax 页面中,您必须包含

Ajax 来自 JQuery

的电话
function slideTimer() {
   .......
   .......
   $.post('ajax.php', function(data){
      pages = data
      if(current_page < pages.length - 1) {
         ........ 
         ........
   },'json');
}

文件ajax.php

   <?php
        // here NOT work
        $array = array();
        $array = array_slice(scandir('strony'), $_POST['page']);
        $js_array = json_encode($array);

        header('Content-Type: application/json');
        echo $js_array;
    ?>

此处服务器脚本将回显 js_array