【问题标题】:How can I show JSON data in Chart.js with Javascript if static values are working but dynamic from mySQL are not?如果静态值有效但 mySQL 中的动态值无效,如何使用 Javascript 在 Chart.js 中显示 JSON 数据?
【发布时间】:2016-10-02 21:59:25
【问题描述】:

我有以下格式的 JSON 数据:

{
    "labels": ["12.11.2016", "13.11.2016", "14.11.2016", ...],
    "temperature": ["12", "35", "27", ...],
    "humidity": ["56", "70", "87", ...]
}

并希望在 Chart.js 中显示它。

我已经找到了 this 的例子,但它不知何故不起作用......

我的 Chart.js 代码如下:

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="/node_modules/chart.js/dist/Chart.bundle.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<style>
    canvas{
        -moz-user-select: none;
        -webkit-user-select: none;
        -ms-user-select: none;
    }
</style>
<title>Temperatur und Feuchtigkeit</title>
</head>
<body>
    <div style="width: 100%;"> 
        <canvas id="canvas"></canvas>
    </div>
    <script>
        var data;
        $.get('GetTestData.php', function(dataGet) {
            data = JSON.parse(dataGet);
            //console.log(data['labels']);
        });
        var randomScalingFactor = function() {
            return Math.round(Math.random() * 100);
        };
        var randomColorFactor = function() {
            return Math.round(Math.random() * 255);
        };
        var randomColor = function(opacity) {
            return 'rgba(' + randomColorFactor() + ',' + randomColorFactor() + ',' + randomColorFactor() + ',' + (opacity || '.9') + ')';
        };

        var config = {
            type: 'line',
            data: {
                //labels: ["11.11.2016", "12.11.2016", "13.11.2016", "14.11.2016", "15.11.2016", "16.11.2016", "17.11.2016"],
                labels: labels
                datasets: [{
                    label: "Temperatur",
                    //data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()],
                    data: temperature
                    fill: false
                }//,
                //{
                //    label: "Feuchtigkeit",
                //    data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()],
                //    fill: false
                //}]
            },
            options: {
                responsive: true,
                title:{
                    display:true,
                    text:'Temperatur und Feuchtigkeit'
                },
                tooltips: {
                    mode: 'label'
                },
                hover: {
                    mode: 'dataset'
                },
                scales: {
                    xAxes: [{
                        display: true,
                        scaleLabel: {
                            display: true,
                            labelString: 'Datum'
                        }
                    }],
                    yAxes: [{
                        display: true,
                        scaleLabel: {
                            display: true,
                            labelString: 'Wert'
                        },
                        ticks: {
                            suggestedMin: -20,
                            suggestedMax: 250,
                        }
                    }],
                }
            }
        };

        var labels = [], temperature=[], humidity=[];
        data['labels'].forEach(function(singleResult) {
            labels.push(singleResult);
        });
        data['temperature'].forEach(function(singleResult) {
            temperature.push(singleResult);
        });
        data['humidity'].forEach(function(singleResult) {
            humidity.push(singleResult);
        });

        $.each(config.data.datasets, function(i, dataset) {
            dataset.borderColor = randomColor(1.0);
            dataset.backgroundColor = randomColor(1.0);
            dataset.pointBorderColor = randomColor(1.0);
            dataset.pointBackgroundColor = randomColor(1.0);
            dataset.pointBorderWidth = 1;
        });

        window.onload = function() {
            var ctx = document.getElementById("canvas").getContext("2d");
            window.myLine = new Chart(ctx, config);
        };
    </script>
</body>
</html>

使用静态值,我得到一个非常漂亮的图表,如下所示: 但是动态数据加载(如上面的代码)不起作用:/这里有人知道吗?

我得到的错误是:

SyntaxError: missing } after property list[Weitere Informationen]

【问题讨论】:

    标签: javascript jquery mysql json chart.js


    【解决方案1】:

    我现在设法自己解决了这个问题,代码如下:

    <!doctype html>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="/node_modules/chart.js/dist/Chart.bundle.js"></script>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <style>
            canvas{
                -moz-user-select: none;
                -webkit-user-select: none;
                -ms-user-select: none;
            }
        </style>
        <title>Temperatur und Feuchtigkeit</title>
        </head>
        <body>
            <div style="width: 100%;"> 
                <canvas id="canvas"></canvas>
            </div>
            <script>
                var data = [], labels = [], temperature=[], humidity=[];
                $.get('GetTestData.php', function(dataGet) {
                    data = JSON.parse(dataGet);
                    data['labels'].forEach(function(singleResult) {
                        labels.push(singleResult);
                    });
                    data['temperature'].forEach(function(singleResult) {
                        temperature.push(singleResult);
                    });
                    data['humidity'].forEach(function(singleResult) {
                        humidity.push(singleResult);
                    });
                    var ctx = document.getElementById("canvas").getContext("2d");
                    window.myLine = new Chart(ctx, config);
                });
                var randomScalingFactor = function() {
                    return Math.round(Math.random() * 100);
                };
                var randomColorFactor = function() {
                    return Math.round(Math.random() * 255);
                };
                var randomColor = function(opacity) {
                    return 'rgba(' + randomColorFactor() + ',' + randomColorFactor() + ',' + randomColorFactor() + ',' + (opacity || '.9') + ')';
                };
    
                var config = {
                    type: 'line',
                    data: {
                        labels: labels,
                        datasets: [{
                            label: "Temperatur",
                            data: temperature,
                            fill: false
                        },
                        {
                            label: "Feuchtigkeit",
                            data: humidity,
                            fill: false
                        }]
                    },
                    options: {
                        responsive: true,
                        title:{
                            display:true,
                            text:'Temperatur und Feuchtigkeit'
                        },
                        tooltips: {
                            mode: 'label'
                        },
                        hover: {
                            mode: 'dataset'
                        },
                        scales: {
                            xAxes: [{
                                display: true,
                                scaleLabel: {
                                    display: true,
                                    labelString: 'Datum'
                                }
                            }],
                            yAxes: [{
                                display: true,
                                scaleLabel: {
                                    display: true,
                                    labelString: 'Wert'
                                },
                                ticks: {
                                    suggestedMin: -20,
                                    suggestedMax: 250,
                                }
                            }],
                        }
                    }
                };
    
                $.each(config.data.datasets, function(i, dataset) {
                    dataset.borderColor = randomColor(1.0);
                    dataset.backgroundColor = randomColor(1.0);
                    dataset.pointBorderColor = randomColor(1.0);
                    dataset.pointBackgroundColor = randomColor(1.0);
                    dataset.pointBorderWidth = 1;
                });
    
                window.onload = function() {
                    var ctx = document.getElementById("canvas").getContext("2d");
                    window.myLine = new Chart(ctx, config);
                };
            </script>
        </body>
        </html>
    

    结果如下:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      相关资源
      最近更新 更多