【问题标题】:Putting Values from JSON to High Charts将 JSON 中的值放入 Highcharts
【发布时间】:2015-05-01 12:58:28
【问题描述】:

我对高图表有疑问,我想显示图表以显示此示例 JSON 数据的详细信息

[{"eventName":"ABC","countError":147391},"eventName":"DEF","countError":117926}]

JSON 代码本身只包含 eventNamecount error 两个参数。

我使用的代码分为AJAX功能:

function getSumErrorSummary(callback) {
        $.ajax({
            type : 'GET',
            url : 'ErrorSummaryServlet',
            dataType : 'JSON',
            success : function(data, textStatus, jqXHR) {
                callback(data);    
            },
            error : function(jqXHR, textStatus, errorThrown) {
                console.log("Cannot getting Error Summary Servlet," + textStatus.toString());
            },
        });
    }

然后我使用此代码将数组放入对象中var objects = [];

然后我使用这个逻辑调用 AJAX 函数:

getSumErrorSummary(function(data){
    $.each(data, function (i, item) {
        //console.log([item.eventName, item.countError]);
        console.log("starting...");
        objects.push([item.eventName, item.countError]);
        console.log("done");
    })
});

var options = {
    chart : {
        type : 'column',
        margin : 75,
        options3d : {
            enabled : true,
            alpha : 10,
            beta : 25,
            depth : 70
        }
    },
    title : {
        text : 'Subtotal Error Summary'
    },
    plotOptions : {
        column : {
            depth : 25
        }
    },
    xAxis : {
        title :{
            text: 'Names'
        }
    },
    yAxis : {
        title : {
            text : 'Sub total'
        }
    },
    series : [{
        data: objects,
        name: 'Click Error'
    }]
}

$('#flot-line-chart').highcharts(options);

我已经初始化了函数,将每个数据推送到一个称为对象的数组中。然后将每个对象放入 highcharts 数据系列中。但除了 x、y 标签和系列名称之外,图表什么也没有显示。

有什么想法吗?请帮助提供建议。

谢谢

更新 1

我把代码改成这样:

getSumErrorSummary(function(data){
         console.log("starting...");
          $.each(data, function (i, item) {
                //console.log([item.eventName, item.countError]);
                objects.push(data.map(function (d, i) {
                    return { name: d.eventName, data: [d.countError] };
                }));
            })
        console.log("done");
    });

但在控制台日志调试器中,它显示为空[]

【问题讨论】:

  • 尝试将您的 counterror 字段解析为整数,或者在您从 AJAX 调用获取数据后尝试使用 var json = $.parseJSON(data); 将其解析为 JSON;只是猜测!
  • Update 1 函数太错误了,你循环了 2 次,不需要推入对象,map 函数返回你想要的对象数组。检查我的更新答案。
  • AJAX 是异步的,这意味着您需要创建图表 inside 回调。 :)

标签: jquery ajax json highcharts


【解决方案1】:

你的 JSON 数据应该是这样的

[{ name: 'ABC', data: [147391] }, { name: 'DEF', data: [117926] }]

或者如果你不想改变它,使用这个函数来创建对象

更新

var options = {
    chart : {
      ......
    series : []  //no data while initializing
};

getSumErrorSummary(function(data) {
    console.log(object) // undefined
    var object = data.map(function(d, i) { 
                return { name: d.eventName, data: [d.countError] }; 
             });
    console.log(object); //[{ name: ... }]

    //set object to options
    options.series = object;

    // call your chart function here
    $('#flot-line-chart').highcharts(options);
});

检查这个JSFiddle (更新)

【讨论】:

  • 您好,还是没有运气,我已经将数据映射到回调函数中。请参阅更新 1。谢谢
  • 我已经将$('#flot-line-chart').highcharts(options); 与您的更新一样,但图表仍未显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
相关资源
最近更新 更多