【问题标题】:$.getJSON does not retrieve up-to-date information$.getJSON 不检索最新信息
【发布时间】:2026-02-09 01:20:03
【问题描述】:

我设置了一个 MySQL 数据库。我有一个 PHP 文件,它连接到数据库并根据数据库的信息创建一个数组。然后它会回显编码为 JSON 的数组。我有一个带有 JavaScript 的 HTML 文件来检索此 JSON 并将其记录在控制台上。

问题:当我在更新表格后运行 HTML 文件时,它不会显示新信息。在运行控制台的 HTML 文件之前,我必须手动运行创建 JSON 的 PHP 文件,以向我显示更新的信息。 如何在不手动运行 PHP 脚本的情况下让 HTML 文件始终从我的数据库中检索最新信息?

这里是 PHP 文件 (db.php):

<?php

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();

?>

这是 HTML 文件 (db.html):

<html>

<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

</head>

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

</html>

【问题讨论】:

  • 如何运行HTML文件和PHP文件?手动运行一个PHP文件是什么意思?
  • @ThomasSablik 我的网站根目录中有这些文件。我必须在打开 HTML 文件之前打开 PHP 文件,以便 HTML 文件将更新的数据库信息记录到控制台。 Felix 的回答解决了这个问题。

标签: javascript php jquery mysql


【解决方案1】:

您不能将 JQuery 代码放入脚本中。您必须嵌入onReady() 电话;否则,它将在加载 HTML 之前执行

$(document).ready(function(){
    $.getJSON('db.php', function(data) {
        console.log(data);
    });
});

另外,请删除愚蠢的“免责声明”。对开发来说是新手没什么错。只要您阅读tutorial,您就应该很好。这种“免责声明”被视为提出草率问题的借口;而你实际上不太可能会得到答案!

【讨论】:

  • 这很好用,虽然我不确定它为什么会起作用。我会查看您添加的内容的文档。
  • 任何JQuery 文档都对此进行了详细说明;例如,这个:api.jquery.com/ready
【解决方案2】:

在页面上创建一个刷新按钮并为其分配点击监听器。

$(document).on('click', '#refresh_button', function (){

    $.getJSON('db.php', function(data) {
        RefreshTableFunction(data);
    });

});

现在的问题是你需要刷新页面才能从服务器(php文件)获取数据

【讨论】: