首页 > 解决方案 > 将本地 JSON 数据加载到图表中(JSON+Highcharts)

问题描述

我在 HTML 中直接包含 JSON 数据的代码工作正常,但是当我尝试加载与本地 .json 文件(名为 co.json)相同的数据时,我无法使其工作。我正在使用 XAMPP 制作本地服务器,并且 html 和 json 文件位于同一文件夹中。有人可以告诉我吗?

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Highcharts data from JSON Response</title>
        <style>
        body{
            margin-top: 30px;
            margin-left:40px;
        }
        </style>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>      
    <script src="http://code.highcharts.com/highcharts.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
           var JSON = [{
               "vrijednostOS": "0.191",
               "vrijednostRI": "0.205",
               "vrijednostZG": "0.245",
               "mjernaJedinica":"mg\/m3",
               "vrijeme": "2018-08-01 T00:00:00+02:00"
           }, {
               "vrijednostOS": "0.2",
               "vrijednostRI": "0.2",
               "vrijednostZG": "0.234",
               "mjernaJedinica":"mg\/m3",
               "vrijeme": "2018-08-02 T00:00:00+02:00"
           }, {
               "vrijednostOS": "0.226",
               "vrijednostRI": "0.196",
               "vrijednostZG": "0.234",
               "mjernaJedinica":"mg\/m3",
               "vrijeme": "2018-08-03 T00:00:00+02:00"
           }, {
               "vrijednostOS": "0.245",
               "vrijednostRI": "0.2",
               "vrijednostZG": "0.24",
               "mjernaJedinica":"mg\/m3",
               "vrijeme": "2018-08-04 T00:00:00+02:00"
           }, {
               "vrijednostOS": "0.257",
               "vrijednostRI": "0.2",
               "vrijednostZG": "0.256",
               "mjernaJedinica":"mg\/m3",
               "vrijeme": "2018-08-05 T00:00:00+02:00"
           }, {
               "vrijednostOS": "0.226",
               "vrijednostRI": "0.209",
               "vrijednostZG": "0.256",
               "mjernaJedinica":"mg\/m3",
               "vrijeme": "2018-08-06 T00:00:00+02:00"
            }, {
               "vrijednostOS": "0.255",
               "vrijednostRI": "0.209",
               "vrijednostZG": "0.277",
               "mjernaJedinica":"mg\/m3",
               "vrijeme": "2018-08-07 T00:00:00+02:00"
           }];

           var options = {
               chart: {
                   renderTo: 'container',
                   type: 'spline'
               },
               title: {
                    text: 'Dnevni udio ugljikovog monoksida u zraku 1.8.2018. - 7.8.2018.'
                },
               tooltip: {
                    valueSuffix: {}
                },
               xAxis: {},
               series: [{},{},{}],
               yAxis: {
                    title: { text: "mg/m3" }
                }
           };

               var categories = [],
                   points = [];
                   points2 = [];
                   points3 = [];
                   mj = [];

                $.each(JSON, function(i, el) {
                    categories.push(el.vrijeme);
                    mj.push(el.mjernaJedinica);
                    points.push(parseFloat(el.vrijednostOS));
                    points2.push(parseFloat(el.vrijednostRI));
                    points3.push(parseFloat(el.vrijednostZG));
                });
               options.xAxis.categories = categories;
               options.series[0].data = points;
               options.series[0].name = "Osijek";
               options.series[1].data = points2;
               options.series[1].name = "Rijeka";
               options.series[2].data = points3;
               options.series[2].name = "Zagreb (Međunarodna zračna luka)";
               options.tooltip.valueSuffix = mj[0];
               var chart = new Highcharts.Chart(options);
       });
    </script>
</head>
<body>
    <div id="container" style="height: 400px"></div>    
</body>
</html>

尝试过var JSON = $.getJSON("co.json");,制作图表但没有任何数据,其他尝试只显示一个空窗口。

标签: javascriptjsonchartshighcharts

解决方案


好吧,我想通了。(更改了 var 的名称以减少混淆)

var co = $.ajax({
                url: "json.json",
                async: false
            }).responseText;

co = JSON.parse(co);

推荐阅读