【发布时间】:2015-05-01 12:58:28
【问题描述】:
我对高图表有疑问,我想显示图表以显示此示例 JSON 数据的详细信息
[{"eventName":"ABC","countError":147391},"eventName":"DEF","countError":117926}]
JSON 代码本身只包含 eventName 和 count 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