高图表动态Json值未在系列数据部分中加载,但静态值正在精确加载

时间:2015-09-02 11:34:23

标签: php jquery highcharts

您好我有一个问题我在此静态值中创建一个HighChart到系列数据部分工作正常。但是没有显示动态部分的相同类型值。

    function getusercategorygraph()
{
    $.getJSON('config/alumniusermodes.php',function(data){ 
        //alert(json);
        //alert($.parseJSON(data));
        //alert(obj);
        var finaldata = '[';
        var tmp = '';
        var chart;
        $.each(data, function( index, value ) {
            finaldata += '{';
            $.each(value, function( index, value ) {
                //alert(index);
                if(index === 'name')
                {
                    tmp = " " + index + " : '" + value + "', "; 
                }
                else
                {
                   tmp = " " + index + " : " + value + ", ";  
                }
                finaldata += tmp;
                //alert("finaldata: " + finaldata);
            });
            finaldata+='},';             
        });
        finaldata +=']';
        //alert(finaldata);        
        chart = new Highcharts.Chart({
            chart: {
           /* backgroundColor: {
                linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 },
                stops: [
                   [0, 'rgb(0, 0, 0)'],
                   [1, 'rgb(0, 0, 0)']
                ]
             },*/
            renderTo : 'user-count',
            type: 'column',                    
            },
            title: {                                                
                text: 'Alumni Users By Category Analytics'
            },                                            
            xAxis: {
                color:'#0077CC',
                type: 'category'
            },
            yAxis: {
                title: {
                    text: 'Total Number of Alumni Members'
                }

            },
            legend: {
                enabled: false
            },
            plotOptions: {
                series: {
                    borderWidth: 0,
                    dataLabels: {
                        enabled: true,
                        format: '{point.y} Members'
                    }
                }
            },

            tooltip: {
                headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
                pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y} Members</b><br/>'
            },

            series: [{
                name: "Alumni Type",
                colorByPoint: true,
                //sdata: [{ name : 'Standard',  y : 52, },{ name : 'Silver',  y : 24, },{ name : 'Gold',  y : 20, },{ name : 'Platinum',  y : 6, },]
                data: [{ name : 'Standard',  y : 52, },{ name : 'Silver',  y : 24, },{ name : 'Gold',  y : 20, },{ name : 'Platinum',  y : 6, },]
                //data : finaldata,
            }],        
        });
        ///chart.series[2].data.push(finaldata);
    });
}

我只收到这样的最终数据

[{name:'Standard',y:52,},{name:'Silver',y:24,},{name:'Gold',y:20,},{name:'Platinum', y:6,},]

但我无法在此图表中加载,但在静态模式下粘贴相同值时,它会正确显示。

现在只显示空白部分。 我是HighCharts的新手请帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

当您想要生成数组时,您的代码正在创建最终数据作为字符串。你应该有更好的运气:

// Create a new array
var finaldata = []
var chart;

// Perform your operations
$.each(data, function( index, value ) {
    // Create a new hash
    var currentItem = {}

    // Create the proper values in your hash
    $.each(value, function( index, value ) {
        currentItem[index] = value;  
    });

    // Push the new hash to the array
    finaldata += currentItem;
 });

如果您的所有数据都以旧代码成功创建共享字符串的方式传递,那么这应该构建您正在查找的对象。

要对此进行测试,您可能首先要尝试完全保留代码,并将字符串解析为JSON:

// Use this instead of 'data : finaldata'
data: JSON.parse( finaldata ),

这会尝试将您的字符串转换为您尝试操作的对象。也就是说,通过字符串操作来练习构建数组会很糟糕。我非常强烈建议您遵循我详述的第一种方法。

答案 1 :(得分:1)

您好我发现这是我的查询。

   var finaldata = [];
        $.getJSON('config/alumniusermodes.php',function(data){ 
            // Create a new array
            var finaldata = [];
            var chart;
            var categories = [];
            var tools = [];        
            $.each(data, function( index, value ) {            
                var currentItem = {}
                finaldata.push({
                        name: value.name,
                    y: parseFloat(value.y)
                });            
             });       

            var chart = new Highcharts.Chart({        
                chart: {              
                    renderTo : 'user-count',
                    type: 'column',                    
                },
                title: {                                                
                    text: 'Alumni Users By Category Analytics'
                },                                            
                xAxis: {
                    color:'#0077CC',                
                    categories: categories
                },
                yAxis: {
                    title: {
                        text: 'Total Number of Alumni Members'
                    }

                },
                legend: {
                    enabled: false
                },
                plotOptions: {
                    series: {
                        borderWidth: 0,
                        dataLabels: {
                            enabled: true,
                            format: '{point.y} Members'
                        }
                    }
                },

                tooltip: {
                    headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
                    pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y} Members</b><br/>'
                },

                series: [{
                    name: "Alumni Type",
                    colorByPoint: true,               
                    data : finaldata,
                }],
            });         
        });  

这是我正确的编码解决了我的问题