だから私は私のウェブサイトに「最近の写真を表示する」divを持っています。これは20秒ごとにコンテンツを更新して新しい写真を表示します。問題は、現在のajax呼び出しが、20秒後ではなく、即座に更新され、更新しても前のデータが削除されないため、1000枚以上の画像がすべて一覧表示されることです。
これが私のajax呼び出しです:
$(window).load(function(){
var timer = 0;
for (x =0; x<=20; x++)
{
timer++;
if(timer == 20 || x == 20)
{
//create XMLHttpRequest object
xmlHttpRequest = (window.XMLHttpRequest) ?
new XMLHttpRequest() : new ActiveXObject("Msxml2.XMLHTTP");
//If the browser doesn't support Ajax, exit now
if (xmlHttpRequest == null)
return;
//Initiate the XMLHttpRequest object
xmlHttpRequest.open("GET", "../php/rotalas.php", true);
//Setup the callback function
xmlHttpRequest.onreadystatechange = updt_pictures;
//Send the Ajax request to the server with the GET data
xmlHttpRequest.send(null);
}
function updt_pictures()
{
if(xmlHttpRequest.readyState == 4)
{
document.getElementById('friss_kepek').innerHTML = xmlHttpRequest.responseText;
}
}
}
これが、新しいファイルを一覧表示するphpと呼ばれるものです。
<?php
$timer = 0;
for($x = 0; $x < 20; $x++)
{
if($timer == 20 OR $x==20)
{
$timer = 0;
$x= 0;
}
}
$x = 1;
while($x >=$timer)
{
$imgdir = '../img/blog/img/amator/Amator_thumb/'; //Pick your folder .. images
$i=0;
$dimg = opendir($imgdir);//Open directory
while($imgfile = readdir($dimg))
{
if( in_array(strtolower(substr($imgfile,-3)),$allowed_types) OR
in_array(strtolower(substr($imgfile,-4)),$allowed_types) )
/*If the file is an image add it to the array*/
{$a_img[] = $imgfile;}
if ($imgfile != "." && $imgfile!="..")
{
$imgarray[$i]=$imgfile;
$i++;
}
closedir($imgdir);
$totimg = count($a_img); //The total count of all the images .. img_coun
for($x=$page*1; $x < $totimg && $x < ($page+1)*1; $x++){
$rand=rand(0,count($imgarray)-1);
if($rand >= 0)
{
echo '<img class="kep_listaz" src="../img/blog/img/amator/Amator_thumb/'.$imgarray[$rand].'" width="160" height="140">';
}}
ループの最後でsleep(20)を使おうとしましたが、まったく更新されませんでした。
ありがとう!