2012-01-12 191 views
0

我試圖每隔一段時間刷新頁面上的一些元素。我很清楚,現在在這裏一萬主題有關,我試圖讓我的工作,但這裏是我需要刷新..AJAX Div使用PHP刷新

這是獲取生成的代碼加載網頁時:

<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,似乎這是可能的,但我似乎無法讓它工作。

這一切都是顯示廣場div,並加載div中的100個圖像。然後,環球免稅店腳本接管並很好地顯示它。 AJAX會更好地工作還是JQuery?

謝謝你的幫助!

回答

0
+1

完美!謝謝! – 2012-01-12 18:38:12

+1

因此,與外部資源的鏈接可以作爲更好的答案,因爲他能夠在不到一分鐘的時間內儘快發出吱吱聲(因爲我正在寫一些內容)?預計答案是獨立的。甚至沒有upvote?有時我想放棄堆棧溢出。 :-D – 2012-01-12 18:49:41

4

「將AJAX更好地工作或jQuery的?」 - AJAX是一種技術,jQuery是一個庫。事實證明,jQuery有一個非常好的AJAX API。

我們稱之爲PHP「galleria.php」。在原始頁面加載時,使用好ol'<?php include('galleria.php')?>將其插入父級PHP頁面。現在最終用戶正在看到完整的初始化頁面。

要更新它,你必須提供一些AJAX選項,但最簡單的就是包括你的頁面上的jQuery,然後你可以在腳本中使用​​:

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

有空間調整.. 。也許galleria.php不包括在頁面上設置的<div id="galleria">。在這種情況下,您將直接加載到#galleria而不是#someDiv,併爲自己節省一個不必要的容器。也許你緩存$('#someDiv')對象聲明它在一個不同的範圍,以便它可以重新使用。但這是一般的要點。

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>