每x';加载一个包含的php文件;第th秒


Loading an included php file every x'th second

我试图加载一个包含的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());
}

希望它对你有用。