使用PHP进行AJAX Div Refresh

时间:2012-01-12 18:24:42

标签: ajax jquery partial-page-refresh

我试图经常刷新页面上的一些元素。我知道这里有一百万个主题,我试图让我的工作,但这是我需要刷新..

这是在页面加载时生成的代码:

<div id="galleria">

    <?php
    $a = array();
    $dir = '../public/wp-content/uploads/2012/01';
    if ($handle = opendir($dir)) {
      while (false !== ($file = readdir($handle))) {
        if (preg_match("/\.png$/", $file)) $a[] = $file;
        elseif (preg_match("/\.jpg$/", $file)) $a[] = $file;
        elseif (preg_match("/\.jpeg$/", $file)) $a[] = $file;
      }
      closedir($handle);
    }

    $totalImgs = count($a);
    $imgUsed = array();
    for ($j = 0; $j < 100; $j++)
    {
        do
        {
            $randIndex = mt_rand(0, $totalImgs);
        }
        while ($imgUsed[$randIndex] === TRUE);
        $imgUsed[$randIndex] = TRUE;
        echo "<img src='" . $dir . '/' . $a[$randIndex] . "' />";
    }

    ?>  

</div>

我想每10秒自动刷新一次,但不会重新加载页面。我已经阅读了ajax,似乎这是可能的,但我似乎无法让它工作。

所有这一切都是显示galleria div,并在div中加载100个图像。然后galleria脚本接管并很好地显示它。 AJAX会更好还是JQuery?

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

“AJAX会更好还是jQuery?” - AJAX是一种技术,jQuery是一个库。事实证明,jQuery具有出色的AJAX API。

让我们称之为PHP“galleria.php”。在原始页面加载时,使用好的“<?php include('galleria.php')?>将其插入到父PHP页面中。现在最终用户看到了完整的初始化页面。

要更新它,您可以使用许多AJAX选项,但最简单的方法是在页面上包含jQuery,然后您可以在脚本中使用.load()

var updateGallery = setInterval(function() {
  $('#someDiv').load('galleria.php');
}, 10000);

还有调整空间......可能galleria.php不包括页面上设置的<div id="galleria">。在这种情况下,您可以直接加载到#galleria而不是#someDiv,并为自己保存一个不必要的容器。也许您通过在不同的范围内声明它来缓存$('#someDiv')对象,以便可以重复使用它。但这是一般的要点。

答案 1 :(得分:0)

答案 2 :(得分:0)

在我写here时,您可以使用jQuery ajax调用填充div。

 <html>
    <head>
    <script type="text/javascript">
        function refresh_gallery(){
            $.ajax({
                type: "POST",
                    url: "generate_gallery.php",  // your PHP generating ONLY the inner DIV code
                    data:   "showimages=100",
                    success: function(html){
                        $("#output").html(html);
                    }
        });  
    }

    $(function() {
    refresh_gallery(); //first initialize

    setTimeout(refresh_gallery(),10000); // refresh every 10 secs

        });

    </script>
</head>
<body>
    <div id="output"></div>
</body>
</html>