Highcharts Pyramid Chart使用JSON,PHP显示无数据

时间:2014-10-16 13:48:03

标签: javascript php jquery json highcharts

在Highcharts中使用带有金字塔图表的JSON时,我在控制台日志中没有出现任何错误,但没有显示数据。

我有chart.php,结果如下:

{"success":1,"data":[{"name":"John Spoon","data":300}, {"name":"Dave Jones","data":200},{"name":"Other","data":500}]}

这是我尝试过的,它不会返回任何数据。

<div id="chart"  style=
                        "height:600px;width:100%;"></div>

<script>
$(function () {
    $("#chart").html("Loading Activity Log Graph...");

    var options = {
        chart: {
            type: 'pyramid',
            renderTo: 'chart',
            marginRight: 100
        },
        title: {
            text: 'Activity',
            x: -50
        },
        plotOptions: {
            series: {
                dataLabels: {
                    enabled: true,
                    format: '<b>{point.name}</b> ({point.y:,.0f})',
                    color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black',
                    softConnector: true
                }
            }
        },
        legend: {
            enabled: false
        },
        name: 'Activity Count',
        series: [{}]
   };

    $.ajax({
        url: "charts.php",
        type:'post',
        dataType: "json",
        success: function(data){
            options.series = data.data;
            var chart = new Highcharts.Chart(options);          
        }
    });

}); 
</script>

这是我想要的结果,显示没有使用JSON: http://jsfiddle.net/0dyy44hz/

我需要更改哪些内容才能显示数据?

1 个答案:

答案 0 :(得分:2)

查看pyramid example,数据必须采用单个系列的形式,每个数据点都是[name, value]的数组。您有两个选项,更改PHP以输出正确的格式或修改javascript中的PHP输出。由于您没有发布您的PHP代码,我将在稍后执行:

var data = {"success":1,"data":[{"name":"John Spoon","data":300}, {"name":"Dave Jones","data":200},{"name":"Other","data":500}]};    

options.series = [{
    data: $.map(data.data, function(i){ // loop outputted data
        return [[i.name, i.data]]; // coerce into an array of [name,value]
    })
}];

这是一个有效的example