我试图加载一个包含的php文件,每隔三秒钟从数据库加载4个随机图像(在测试时)。这是我的代码,但它不起作用。
function updateImage(){
$('#ajax').load('includes/slideshow.php');
}
$(document).ready(function(){
setInterval( 'updateImage()', 3000 );
});
有人能告诉我怎么解决这个问题吗?(我需要使用Ajax吗?代码会是什么样子?)
我应该补充一点,id为"ajax"的div是空的。
这是幻灯片。hp:
$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调用不会执行。
更新:似乎我应该在slide.php中使用一个更简单的mysql调用和数据库连接。
与其设置任意的3秒,因为这是一个ajax请求,为什么不使用上一个响应的成功回调来触发下一个请求呢?
你可以这样做:
function updateImage(){
$('#ajax').load('includes/slideshow.php', function(){
setTimeout(updateImage, 3000);
});
};
updateImage();
现在我们正在等待一个请求完成,然后再发送另一个请求。通过这种方式,您可以更均匀地将请求分配到服务器。如果服务器开始变慢,也会相应地变慢,而不是继续用它无法处理的请求来敲打服务器。
我有一种感觉,浏览器可能会缓存该URL的响应,并每次使用缓存的版本,所以为了确保每次都能获得新的副本,请在URL中添加一个参数,尝试用这个替换您的函数
function updateImage(){
$('#ajax').load('includes/slideshow.php?'+new Date().getTime());
}
希望它对你有用。