我正在尝试加载一个包含的php文件,每隔三秒钟(测试时)从数据库加载4个随机图像。这是我的代码,但它不起作用。
function updateImage(){
$('#ajax').load('includes/slideshow.php');
}
$(document).ready(function(){
setInterval( 'updateImage()', 3000 );
});
谁能告诉我如何解决这个问题? (我需要使用Ajax吗?那代码看起来怎么样?)
我应该补充一点,id为'ajax'的div是空的。
这是slideshow.php:
$select = new c_select();
$rows = $select -> select ("images ORDER BY rand() LIMIT 4");
foreach ($rows as $nogle => $row){
echo "<a href='upload/".$row['img_name']."' data-lightbox='lightbox'><img src='upload/resize_".$row['img_name']."'></a>";
}
好吧,如果我尝试在调用之前回显php函数时间,它会显示并刷新=它的工作原理。但是sql调用没有执行。
更新:好像我应该在slideshow.php中使用更简单的mysql调用和数据库连接。
答案 0 :(得分:1)
不是设置任意3秒,因为这是一个ajax请求,为什么不使用先前响应的成功回调来触发下一个请求呢?
你可以这样做:
function updateImage(){
$('#ajax').load('includes/slideshow.php', function(){
setTimeout(updateImage, 3000);
});
};
updateImage();
现在我们正在等待我们发送另一个请求之前完成的请求。这样,您可以更均匀地将请求调整到服务器。如果服务器开始变慢,这也将相应地减慢速度,而不是继续使用它无法处理的请求来锤击服务器。
答案 1 :(得分:0)
好吧我觉得浏览器可能会缓存该URL的响应并且每次都使用缓存版本,所以为了确保每次都获得一个新的副本,请在URL中添加一个参数,尝试用此
function updateImage(){
$('#ajax').load('includes/slideshow.php?'+new Date().getTime());
}
希望它适合你。