You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript每秒重复执行函数,实现table.php在index.php中的实时刷新?

解决table.php每秒实时刷新的问题

哦,这个问题很常见——你用的setTimeout只会执行一次函数调用,所以才只刷新了一次table内容。要实现每秒重复刷新,你有两个靠谱的方案:

方案1:使用setInterval(简单直接)

setInterval的作用就是按照指定时间间隔重复执行目标函数,刚好符合你的需求。修改代码如下:

function get_table() {
  $("#tableloader").load('table.php');
}
// 每隔1秒触发一次get_table函数
setInterval(get_table, 1000);

这样浏览器就会每1秒自动调用一次get_table,实现table内容的实时同步。

方案2:递归调用setTimeout(更可靠)

如果table.php的加载偶尔会超过1秒,setInterval可能会导致多个请求叠加(前一个请求还没完成,下一个又发出去了)。这种情况下,递归调用setTimeout更稳妥——它会在每次加载完成后,再等待1秒发起下一次请求:

function get_table() {
  $("#tableloader").load('table.php', function() {
    // 只有当本次加载完成后,才设置下一次刷新
    setTimeout(get_table, 1000);
  });
}
// 首次调用启动刷新循环
get_table();

额外提示:如何停止刷新

如果你需要在某个时机停止刷新(比如用户切换到其他页面),记得保存定时器引用并清理:

  • 对于setInterval方案:
// 保存定时器ID
const tableRefreshTimer = setInterval(get_table, 1000);
// 需要停止时调用
clearInterval(tableRefreshTimer);
  • 对于递归setTimeout方案:
let shouldRefresh = true;

function get_table() {
  if (!shouldRefresh) return;
  $("#tableloader").load('table.php', function() {
    if (shouldRefresh) {
      setTimeout(get_table, 1000);
    }
  });
}
// 启动刷新
get_table();
// 需要停止时设置shouldRefresh为false
shouldRefresh = false;

内容的提问来源于stack exchange,提问作者adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:29:15