使用 RGraph 从 Postgres 数据库轮询数据并使用 AJAX/JSON 更新

Using RGraph to poll data from a Postgres DB and update using AJAX/JSON

我在这方面有点不深入,所以我希望有人有一些见解。 :)

我正在尝试使用 AJAX 更新 div。 AJAX 调用将下拉选择的值发送到 PHP 文件,该文件将执行 pgsql 查询以获取一些数据。我在 RGraph 教程中读到,此数据需要格式化为 JSON 格式,以便 RGraph 可以解释它,然后提供给运行 RGraph 视图的 JS。

这个问题实际上可能是 2 个独立的问题,但我还是要问:

  1. 是否有一种标准的方法来获取 PHP 中的查询结果并将其输出为 JSON 格式?
  2. 使用JSON数据的JS要在什么地方触发?我试过对一些初始数据进行硬编码,但图表似乎没有显示出来。但是,我知道 jQuery 正在正确执行 AJAX 调用,因为我看到 div 更新(中间有一条 "Loading..." 消息,然后返回空白,指示我是一个空响应),所以我想我只是没有正确地确定这个范围。

P.S。不,这次我没有犯 $_POST/$_GET 错误。

如有任何帮助,我们将不胜感激。谢谢!

编辑 1:得到这个。这实际上比我想象的要容易得多。但是,仍然没有正确确定范围。对 RGraph 如何抓取 JSON 对象并将其显示为图形,以及如何使用 AJAX 用新图形刷新 div 有什么帮助吗?

这里有一些基于 SVG 的 AJAX 演示页面:

这里有一堆指向 SVG 基本 AJAX 演示的链接,但现在演示不再在线 - 它们在下载存档中。所以在这里下载:https://www.rgraph.net/download.html#stable

这里有一个 JSON 文档页面:

https://www.rgraph.net/svg/docs/the-svg-ajax-functions.html

它的代码示例是这样的:

<script>
    GLOBALS = {};

    function draw()
    {
        RGraph.SVG.AJAX.getJSON('/ajax/getdata.html?json', function (json)
        {
            if (GLOBALS.bar) {
                RGraph.SVG.clear(GLOBALS.bar.svg);
            }

            GLOBALS.bar = new RGraph.SVG.Bar({
                id: 'chart-container',
                data: json.data,
                options: {
                    // Add your own options to configure the chart
                }
            }).draw();
        });
    }

    draw();
</script>

如果你按照这个例子,在你的网站上创建一个页面,从你的数据库中获取数据并像这个页面那样输出它:

https://www.rgraph.net/getdata.html?json

请注意,该页面没有 HTML 输出 - 只有 JSON.

然后您可以像上面的代码一样使用 RGraph.SVG.AJAX.getJSON() 函数获取该页面 - 从您的包含图表的网页 - 例如 foo.html 所以 foo.html 将包含上面的 RGraph 代码。

如果你想让它重复,那么你可以添加一个计时器,以便后续的提取更新它:

setTimeout(function ()
{
    draw();
}, 1000);

我认为这涵盖了一切。不过我可能遗漏了一些东西。