从AJAX调用

时间:2016-03-13 18:29:38

标签: ajax charts highcharts

我正在尝试将json数据从mysql / php渲染到Highcharts的不同方法。到目前为止,我已经成功使用这种方法渲染条形图,但出于某种原因,我无法在饼图中渲染数据。

一个js文件处理AJAX调用:

$(function  () {

var select_program = program_type_php;
var select_year = '2016';

console.log ('pie_chart'+program_type_php);

 $.ajax({
url: 'model/job_group_pie_chart.php',
data: {user: 2, select_program:select_program, select_year:select_year},
type: 'GET',
async: true,
dataType: "json",

success: function (year_2016) {
   pie_chart_2016(year_2016);
    console.log('data 2016 job groups'+year_2016);



}

});

成功后,我在另一个js文件中调用一个函数(在本例中,' pie_chart_2016'并将数据对象传递给它。

这是另一个负责将数据呈现为Highchart的js文件:

function pie_chart_2016 (year_2016) {

console.log('year_2016'+year_2016);
$('#pie-chart1').highcharts({
    chart: {
        plotBackgroundColor: null,
        plotBorderWidth: null,
        plotShadow: false,
        type: 'pie'
    },
    title: {
        text: ''
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    plotOptions: {
        pie: {
            allowPointSelect: true,
            cursor: 'pointer',
            dataLabels: {
                enabled: true,
        format: '<b>{point.name}</b>: {point.percentage:.1f} %',
                style: {
                    color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                }   

                },

                showInLegend: true

            },
        series: year_2016

        }
});

};

我已经检查过了,我从我的php文件中获得了有效的json:

 [{name:"Group1",y:829},{name:"Group2",y:9247},{name:"Group3",y:71}]

这些是原始计数(829,9247,71)但是当我能够通过手动输入值来获取饼图时,Highcharts为我计算了百分比 - 很好!

我还设置了足够的console.log来知道正在调用我的函数,并且正在处理我的数据对象。

尽管如此,我得到的只是一个空白面板,而且&#39; highcharts.com&#39;在左下角,所以html也在工作。

我使用的方法与条形图非常相似,所以我很难过!

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

感谢Rahul,我感动了系列:&#39;在plotOptions之外,并添加了这些行。我应该早点抓住这个,饼图需要数据&#39;属性,而条形图包含在他们的JSON数组中。似乎现在运作良好。再次感谢Rahul!

series: [{
        name: 'Job Group',
        colorByPoint: true,
        data: year_2016 
        }]