将本地JSON数据加载到图表中(JSON + Highcharts)

时间:2018-08-19 00:59:48

标签: javascript json charts 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");,可以制作图表但没有任何数据,其他尝试只会显示一个空窗口。

1 个答案:

答案 0 :(得分:0)

好了,我知道了。 (更改了var的名称,以减少混乱)

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

co = JSON.parse(co);