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

如何实现每隔数秒从数据库加载数据且无需刷新整个页面?

问题根因及修复方案

现存问题

  • jQuery.load()方法使用错误:当前$('#test').load('#test')的写法会发起对当前页面的完整HTTP请求,拉取整页内容后再筛选#test节点替换,效率极低,如果公共引入的header.php包含自动刷新逻辑,就会触发整页刷新
  • 定时时间配置错误:代码中设置的5000毫秒对应5秒,不符合你需要的10秒刷新要求
  • 数据逻辑耦合:数据库查询逻辑和前端页面写在同一个文件,异步请求时会重复加载不需要的公共文件,冗余度高

修复步骤

1. 拆分独立数据接口

新建get_messages.php作为异步拉取消息的单独接口,代码如下:

<?php
include('includes/Connection.php');
include('includes/GeneralFunctions.php');

$l1 = $con->prepare("SELECT msg, topic FROM messages ORDER BY id DESC");
$l1->execute();
foreach($l1 as $r1)
{
    echo $r1['topic']."<br />";
    echo $r1['msg']."\n";
}
?>

2. 修改原页面代码

修正js逻辑,去掉冗余重复的查询代码:

<?php 
include('header.php');
?>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript">
setInterval(function(){
      // 仅请求数据接口更新指定区域
      $('#test').load('get_messages.php');
 },10000); // 10秒对应10000毫秒
</script>

<div id="test">
<?php
// 首次加载渲染初始数据,避免页面刚打开时区域空白
include('get_messages.php');
?>
</div>

额外排查点

如果修改后仍存在整页刷新问题,检查header.php中是否存在全局自动刷新的meta标签,类似<meta http-equiv="refresh" content="x">,找到后删除即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:54:05