【问题标题】:Reload random div content every x seconds每 x 秒重新加载随机 div 内容
【发布时间】:2012-03-24 09:30:45
【问题描述】:

我有一个 div,它在每次页面加载时随机显示 10 个文件中的 1 个。我希望它以 8 秒的设定时间间隔重新加载,每次重新加载的 10 个文件中给我一个不同的文件。

我已经阅读了一些使用 jQuery .load 作为解决方案的相关问题,但这不适用于我的代码,因为我不是每次都加载特定文件。

这是我的 div 内容:

<div id="tall-content">

 <?

  $random = rand(1,10);

  include 'tall-files/' . $random . '.php';

 ?>

</div>

谢谢

【问题讨论】:

  • 为什么不能通过 jQuery 加载将使用上述代码的 php 文件?

标签: php html random reload


【解决方案1】:

仅使用 PHP 来完成此操作是不切实际的。本示例使用 jQuery 和 PHP。

$(document).ready(function() {
     $("#div").load("random.php");
     var refreshId = setInterval(function() {
         $("#div").load('random.php');
     }, 8000);
     $.ajaxSetup({ cache: false });
});

random.php

$pages = array("page1.php", "page2.php", "page3.php", "page4.php", "page5.php");

$randompage = $pages[mt_rand(0, count($pages) -1)];

include ($randompage);

【讨论】:

    【解决方案2】:

    在使用 PHP 生成随机内容时,如果不刷新整个页面,您无法让 div 重新加载该内容。

    更好的解决方案是使用 AJAX。您可以将 div 容器内的 PHP 代码存储为单独的文件,并使用 ajax 请求该 php 文件。您还可以设置无限循环以每 8 秒请求一次 php 文件。这是一个示例,但您需要将其重新编码为您的规范:

    <script language="javascript" type="text/javascript">
    <!--
    function ajaxFunction(){
    var ajaxRequest;
    try{ajaxRequest = new XMLHttpRequest();} catch (e){try{ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try{ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){alert("Error: Browser/Settings conflict");return false;}}}
        ajaxRequest.onreadystatechange = function(){
            if(ajaxRequest.readyState == 4){
                document.getElementById('tall-content').innerHTML = ajaxRequest.responseText;
            }
        }
        var url = "random.php";
        ajaxRequest.open("GET", url, true);
        ajaxRequest.send(null);
    }
    //-->
    </script>
    

    唯一缺少的部分是刷新计时器,因为我没有用 javascript 编写很多程序,所以我无法帮助你。但本例的目标是创建一个文件“random.php”,将随机生成器放在那里,并使用上面的这个脚本向 random.php 发出 ajax 请求,这会将那个 php 脚本的输出放在 div 中id 为“tall-content”的容器。所以真的,你需要创建另一个无限循环调用函数“ajaxFunction()”并等待8000毫秒的javascript。

    【讨论】:

      【解决方案3】:

      如果您想在用户坐在您页面上的椅子上时执行此操作,答案是 javascript。

      例如,您可以使用此功能。

          function recrusive_timeout_function() {
                  setTimeout(function() {
                          recrusive_timeout_function();
                  }, 8000);
          }
      

      如果您想在该 div 中包含一个 php 文件(输出一些 html)。 Ajax 是您的朋友,而 JQuery 是一个用户友好且易于使用的 javascript 框架,可以很好地处理您的想法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多