$.getJSON 不检索最新信息

Posted

技术标签:

【中文标题】$.getJSON 不检索最新信息【英文标题】:$.getJSON does not retrieve up-to-date information 【发布时间】:2021-11-07 20:16:03 【问题描述】:

我设置了一个 mysql 数据库。我有一个 php 文件,它连接到数据库并根据数据库的信息创建一个数组。然后它会回显编码为 JSON 的数组。我有一个带有 javascripthtml 文件来检索此 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 的回答解决了这个问题。 【参考方案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文件)获取数据

【讨论】:

以上是关于$.getJSON 不检索最新信息的主要内容,如果未能解决你的问题,请参考以下文章

什么是 Jquery 的 $.getJSON 的香草 JS 版本

我可以在 $.getJSON 函数中使用递归 JavaScript 函数吗?

jQuery之getjson信息展示

从 Reddit 的 API 中检索评论

$.getJSON 没有正确返回([object Object],未定义或啥都没有)

$.getJSON()不执行回调函数