json数据没有进入高等领域

时间:2013-03-24 16:55:39

标签: php ajax json highcharts

我有JSON和highchart的问题:我使用ajax从php mysql获取数据并获得响应但问题是我无法将数据放入高图系列。任何人都可以帮我解决这个问题我对highcharts全新。我的动机是根据从mysql表中提取的月份将数据月收入显示在图表中。

我在map_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);
    }
}

?>

2 个答案:

答案 0 :(得分:1)

Highcharts期望数据指定x,y值。有两种方法可以做到这一点:

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

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

一旦你有数据是这种格式(从php,或通过处理返回的数据到正确的格式),你打电话:

chart.series[0].setData(data);

答案 1 :(得分:0)

您的号码数据应该是数字类型,而不是字符串。为此,您可以在PHP中设置它并在此图中生成JSON:

[{ “月”:1, “总”:4500}]

或使用parseFloat()函数将字符串值替换为数字,然后在setData()中使用正确的JSON;

我还建议提供有关预处理数据的文章: http://docs.highcharts.com/#preprocessing