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

$.getJSON调用PHP接口无法获取MySQL数据库最新数据问题求助

问题原因

该现象是HTTP缓存机制导致的:你首次访问db.php后,浏览器会默认缓存该接口返回的JSON结果,后续前端发起重复请求时,会直接读取本地缓存的旧数据,不会请求服务器执行PHP脚本拉取最新数据库内容。

解决方案

1. 服务端(db.php)添加禁用缓存的HTTP头

在db.php文件最顶部(所有输出内容之前)添加如下代码,强制要求所有客户端、代理服务器都不缓存该接口的返回结果:

<?php
// 禁用缓存头,放在所有代码最开头
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");

// 以下是原有业务代码不变
include ("database_connect.php");

$sql = "SELECT * FROM markers";
$result = $conn->query($sql);

$array = array();
$i = 0;

while($row = $result->fetch_assoc()) {
    $array[$i] = $row;
    $i++;
}

echo json_encode($array);

$conn->close();
?>

2. 前端请求添加防缓存参数

两种方案选其一即可:

  • 方案A:给请求地址拼接时间戳参数,让每次请求的URL唯一,绕开缓存
<script>
// 地址后加_参数,值为当前时间戳,每次请求都不同
$.getJSON('db.php?_=' + new Date().getTime(), function(data) {
    console.log(data);
});
</script>
  • 方案B:全局设置jQuery AJAX禁用缓存,适合页面内有多个接口需要禁用缓存的场景
<script>
// 全局配置,放在所有AJAX请求之前
$.ajaxSetup({ cache: false });

$.getJSON('db.php', function(data) {
    console.log(data);
});
</script>

额外注意事项

确保你访问db.html时是通过HTTP/HTTPS协议访问(地址栏为http://localhost/xxx/db.html格式),不要直接双击文件用file://协议打开,file协议下会出现请求异常、缓存规则不生效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:48:02