1

JSON経由でロードされたデータから日付を表示するためにHighchartsのxAxisを取得できないようです。また、データポイントにカーソルを合わせると、ラベルに「無効な日付」と表示されます。

データの生成に使用されるPHPコードは次のとおりです。

function fetchLineChart() {
    $fetchData = $this->db->query("SELECT download, upload, date FROM speed_entries ORDER BY date DESC");

    while ($data = $fetchData->fetch()) {
        $date = date("Y, m, d", strtotime($data['date']));
        $downloadData[] = array('Date.UTC(' . $date . ')', (float)$data['download']);
        $uploadData[] = array('Date.UTC(' . $date . ')', (float)$data['upload']);
    }
    $result = array('download' => $downloadData, 'upload' => $uploadData);
    echo json_encode($result);
}

そしてこれがチャートのjQueryです

$(document).ready(function() {
                var options = {
                    chart: {
                        renderTo: 'lineChart',
                        type: 'line'
                    },
                    title: {
                        text: 'Download / Upload Results'
                    },
                    subtitle: {
                        text: 'Source: Speedtest.net'
                    },
                    yAxis: {
                            title: {
                                    text: 'Speed'
                            },
                            plotLines: [{
                                    value: 0,
                                    width: 1,
                                    color: '#808080'
                            }]
                    },
                    xAxis: {
                        type: 'datetime'
                     },
                    series: [{
                        name: 'Download',
                        lineWidth: 2,
                        marker: {
                            radius: 2
                        },
                        data: []
                    }, {
                        name: 'Upload',
                        data: []
                    }]
                };

                $.getJSON('class.speed.php?mode=lineChart', null, function(json) {
                    var downloads = json.download;
                    var uploads = json.upload;

                    options.series[0].data = downloads;
                    options.series[1].data = uploads;

                    chart = new Highcharts.Chart(options);
                });
            });

他のすべてが機能し、データ行が正しく表示されます。日付を機能させる方法を理解することはできません。

ありがとう

4

1 に答える 1

0

ここでは間違っているかもしれませんが、xAxisを'datetime'に設定すると、ミリ秒(整数)の形式で日付を指定するようにHighchartsに指示しますが、代わりに文字列を渡します。Lingerがすでに提案したように、php関数で直接ミリ秒を生成してみませんか?

$miliseconds = strtotime($data['date']) * 1000;
$downloadData[] = array($miliseconds, (float)$data['download'])
于 2012-06-04T20:15:33.493 に答える