【问题标题】:Showing data from database in AmCharts在 AmCharts 中显示数据库中的数据
【发布时间】:2016-11-16 12:03:49
【问题描述】:

我正在尝试使用 AmCharts 制作图表,并在他们的网站上遵循此示例:https://www.amcharts.com/kbase/using-data-loader-to-connect-charts-to-mysql-data-base/

我原来的代码是

var chart = AmCharts.makeChart("chart_1", {
        "pathToImages": App.getGlobalPluginsPath() + "amcharts/amcharts/images/",

        "dataProvider": [{
            "year": 2009,
            "income": 23.5,
            "expenses": 18.1
        }, {
            "year": 2010,
            "income": 26.2,
            "expenses": 22.8
        }],
            // bunch of graph stylings
    });

    $('#chart_1').closest('.portlet').find('.fullscreen').click(function() {
        chart.invalidateSize();
    });
}

我尝试从 mysql 加载数据

var chart = AmCharts.makeChart("chart_1", {
    "type": "serial",
    "dataProvider": {
        "url": "data.php"
    },
        "pathToImages": App.getGlobalPluginsPath() + "amcharts/amcharts/images/",

      // bunch on graphs style

    });

    $('#chart_1').closest('.portlet').find('.fullscreen').click(function() {
        chart.invalidateSize();
    });
}

包含硬编码数据的原始代码正在运行。下面的mysql不起作用。它是空白页,不显示图表。控制台上也没有错误。

data.php 也在工作并返回 json 数组。

有人可以帮忙吗?

如果还需要php部分

$query = "
       SELECT *
       FROM my_chart_data
       ORDER BY category ASC";
$result = $link->query( $query );

// All good?
if ( !$result ) {
  // Nope
  $message  = 'Invalid query: ' . $link->error . "n";
  $message .= 'Whole query: ' . $query;
  die( $message );
}


// Set proper HTTP response headers
header( 'Content-Type: application/json' );

// Print out rows
$data = array();
while ( $row = $result->fetch_assoc() ) {
  $data[] = $row;
}
echo json_encode( $data );

【问题讨论】:

    标签: mysql json charts amcharts


    【解决方案1】:

    dataProvider 不需要 URL - 如果您使用 dataLoader 插件,则需要将其更改为 dataLoader。要使用 dataLoader 插件,您首先需要包含该插件以及其他图表库,如下所示:

    <!-- chart libraries -->
    <script type="text/javascript" src="//www.amcharts.com/lib/3/amcharts.js"></script>
    <script type="text/javascript" src="//www.amcharts.com/lib/3/serial.js"></script>
    <!-- include dataloader -->
    <script type="text/javascript" src="//www.amcharts.com/lib/3/plugins/dataloader/dataloader.min.js"></script>
    

    然后将dataProvider 更改为dataLoaderdataLoader 接受url

    var chart = AmCharts.makeChart("chart_1", {
        "type": "serial",
        "dataLoader": {
            "url": "data.php"
        },
        // ...
    });
    

    完整的数据加载器文档可以在 github 页面here 上找到。

    【讨论】:

    • 谢谢。我在控制台GET http://localhost/dashboard/text/javascript 404 (Not Found) 在这条线上&lt;script src="text/javascript" src="//www.amcharts.com/lib/3/plugins/dataloader/dataloader.min.js"&gt;&lt;/script&gt; 有一个奇怪的错误@
    • 哎呀。我在脚本标签中输入了两次src。将src="text/javascript" 更改为type="text/javascript"。我的早茶还没开始。对不起。
    • 谢谢,您的回答为我指明了正确的方向,从 amcharts 数据加载器插件文件夹中的串行 json 示例中了解更多信息,解决我的问题
    • 如何用套接字做到这一点?因为我想每分钟从数据库中获取数据并将其显示在 amchart4 中。但我的问题是我的页面在那之后就挂了。
    • @Kirataka - 您在多年前的 v3 答案上发布了 amcharts v4 问题。如果您还没有这样做,我建议您发布一个单独的问题。
    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2011-07-18
    • 2016-09-13
    • 1970-01-01
    相关资源
    最近更新 更多