-1

JSON とハイチャートに問題があります: ajax を使用して php mysql からデータをフェッチして応答を取得していますが、データをハイチャート シリーズに入れることができないという問題があります。私がハイチャートにまったく慣れていないという問題について、誰か助けてもらえますか。私のモットーは、mysqlテーブルから取得した月に応じて、データの月収をチャートに表示することです。

chart_income.php ファイルの ajax 呼び出しから JSON を下回っています。PHP コードを参照してください。

JSON :

[{"month":"1","total":"4500"},{"month":"2","total":"20"},{"month":"3","total":"8300"}]

jqueryコードは次のとおりです。

$(document).ready(function () {
    function requestData() {
        $.ajax({
            type: 'POST',
            url: 'ajax/chart_income.php',
            datatype: 'json',
            success: function (data) {
                alert(data);
                chart.series[0].setData(data.month);
            },
            cache: false
        });
    };


    var chart;
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'demo_chart',
            type: 'line',
            events: {
                load: requestData
            }
        },
        xAxis: {
                categories: []
            },
        yAxis: {
            title: {
                text: 'INR'
            }
        },
        series: [{
                //name: 'Random data',
                data: []
            }
        ]
    });

});

PHP コード:

<?php
$total_yearly_income = $db->query("SELECT MONTH(income_date) as month_updated, COUNT(income_date) as month_updates, SUM(income_amount) as month_total FROM mt_income WHERE income_date BETWEEN '2013-01-01 00:00:00' AND '2013-03-23 23:59:59' GROUP BY MONTH(income_date)");
$i=0;
if ($total_yearly_income) {
    if ($db->num_rows($total_yearly_income)) {
        while ($res = $db->fetch_array($total_yearly_income)) {
            $month = $res["month_updated"];
            $total = $res["month_total"];
            $array[] = array("month" =>$month,"total"=>$total);
        }
        echo json_encode($array);
    }
}

?>
4

2 に答える 2

1

Highcharts は、データが x、y 値を指定することを想定しています。これを行うには、次の 2 つの方法があります。

var data = [[1,4500],[2,20]

また

var data = [{x:1,y:4500},{x:2,y:20}]

データがこの形式になったら (php から、または返されたデータを正しい形式に処理することによって)、次のように呼び出します。

chart.series[0].setData(data);
于 2013-03-24T19:31:45.043 に答える
0

数値データには、文字列ではなく数値型が必要です。これを実現するには、PHP で設定し、次の図の JSON を生成します。

[{"月":1,"合計":4500}]

または parseFloat() 関数を使用して文字列値を数値に置き換えてから、setData() で正しい JSON を使用します。

データの前処理に関する記事で提案することもお勧めします: http://docs.highcharts.com/#preprocessing

于 2013-03-25T09:31:32.360 に答える