来自 JSON 的 AMcharts 数据填充
AMcharts data population from JSON
您好,我有一个正在呈现的图表,正在显示键以及列标题。
我的问题是我无法从我传递的值中生成实际的柱。
我的 php 代码没问题,我在返回数据时使用了函数 json_encode。这是传递给图表代码的返回数据:
[{"gid":"NickShare","Users":1},
{"gid":"admin","Users":2},
{"gid":"sharedTest","Users":2}]
这是我的 JQuery 图表代码:
function supportsSVG() {
return !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', "svg").createSVGRect;
}
var token = $('#_token').val();
$.ajax({
url: 'getShares',
type: 'post',
// dataType:'json',
data: {
_token: token,
},
success: function (data, textStatus, jQxhr) {
var DBData = jQuery.parseJSON(data);
UserGroupsBar = new AmCharts.AmSerialChart();
// var Data = [{}];
UserGroupsBar.dataProvider = DBData;
UserGroupsBar.startDuration = 1;
UserGroupsBar.categoryField = "gid";
$.each(DBData, function (i, item) {
// alert(item['Users']);
if (item['Users'] > 0) {
// Data[0][item['gid'] = item['Users']];
var UserGroupGraph = new AmCharts.AmGraph();
UserGroupGraph.id = item['gid'];
UserGroupGraph.valueField = item['Users'];
UserGroupGraph.title = item['gid'];
UserGroupGraph.type = "column";
UserGroupGraph.lineAlpha = 0;
UserGroupGraph.fillAlphas = 1;
UserGroupGraph.balloonText = "[[title]]: [[value]]";
UserGroupsBar.addGraph(UserGroupGraph);
}
});
UserGroupsBar.write("BarChart");
var GroupValueAxis = new AmCharts.ValueAxis();
GroupValueAxis.axisColor = "#DADADA";
GroupValueAxis.gridAlpha = 0.1;
GroupValueAxis.integersOnly = true;
UserGroupsBar.addValueAxis(GroupValueAxis);
UserGroupsBar.outlineColor = "#FFFFFF";
UserGroupsBar.outlineAlpha = 0.2;
UserGroupsBar.outlineThickness = 2;
UserGroupsBar.startDuration = supportsSVG() ? 1 : 0;
UserGroupsBar.depth3D = supportsSVG() ? 20 : 0;
UserGroupsBar.angle = supportsSVG() ? 30 : 0;
//Root Causes Legend
GroupLegend = new AmCharts.AmLegend();
UserGroupsBar.addLegend(GroupLegend, "Legend");
GroupLegend.valueText = "";
GroupLegend.align = "center";
GroupLegend.position = "absolute";
GroupLegend.marginTop = 30;
GroupLegend.markerType = "circle";
GroupLegend.labelWidth = 180;
GroupLegend.fontSize = 10;
GroupLegend.verticalGap = 20;
// WRITE
UserGroupsBar.write("BarChart");
}
});
现在看来真的快要工作了,我知道我一定是漏掉了一些愚蠢的东西,但我已经盯着它看了很久了。任何指导将不胜感激。
干杯;
NE
valueField
应该按名称指向数据中的实际字段,而您似乎正在分配其值。要修复替换此行:
UserGroupGraph.valueField = item['Users'];
进入这个:
UserGroupGraph.valueField = 'Users';
您好,我有一个正在呈现的图表,正在显示键以及列标题。
我的问题是我无法从我传递的值中生成实际的柱。
我的 php 代码没问题,我在返回数据时使用了函数 json_encode。这是传递给图表代码的返回数据:
[{"gid":"NickShare","Users":1},
{"gid":"admin","Users":2},
{"gid":"sharedTest","Users":2}]
这是我的 JQuery 图表代码:
function supportsSVG() {
return !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', "svg").createSVGRect;
}
var token = $('#_token').val();
$.ajax({
url: 'getShares',
type: 'post',
// dataType:'json',
data: {
_token: token,
},
success: function (data, textStatus, jQxhr) {
var DBData = jQuery.parseJSON(data);
UserGroupsBar = new AmCharts.AmSerialChart();
// var Data = [{}];
UserGroupsBar.dataProvider = DBData;
UserGroupsBar.startDuration = 1;
UserGroupsBar.categoryField = "gid";
$.each(DBData, function (i, item) {
// alert(item['Users']);
if (item['Users'] > 0) {
// Data[0][item['gid'] = item['Users']];
var UserGroupGraph = new AmCharts.AmGraph();
UserGroupGraph.id = item['gid'];
UserGroupGraph.valueField = item['Users'];
UserGroupGraph.title = item['gid'];
UserGroupGraph.type = "column";
UserGroupGraph.lineAlpha = 0;
UserGroupGraph.fillAlphas = 1;
UserGroupGraph.balloonText = "[[title]]: [[value]]";
UserGroupsBar.addGraph(UserGroupGraph);
}
});
UserGroupsBar.write("BarChart");
var GroupValueAxis = new AmCharts.ValueAxis();
GroupValueAxis.axisColor = "#DADADA";
GroupValueAxis.gridAlpha = 0.1;
GroupValueAxis.integersOnly = true;
UserGroupsBar.addValueAxis(GroupValueAxis);
UserGroupsBar.outlineColor = "#FFFFFF";
UserGroupsBar.outlineAlpha = 0.2;
UserGroupsBar.outlineThickness = 2;
UserGroupsBar.startDuration = supportsSVG() ? 1 : 0;
UserGroupsBar.depth3D = supportsSVG() ? 20 : 0;
UserGroupsBar.angle = supportsSVG() ? 30 : 0;
//Root Causes Legend
GroupLegend = new AmCharts.AmLegend();
UserGroupsBar.addLegend(GroupLegend, "Legend");
GroupLegend.valueText = "";
GroupLegend.align = "center";
GroupLegend.position = "absolute";
GroupLegend.marginTop = 30;
GroupLegend.markerType = "circle";
GroupLegend.labelWidth = 180;
GroupLegend.fontSize = 10;
GroupLegend.verticalGap = 20;
// WRITE
UserGroupsBar.write("BarChart");
}
});
现在看来真的快要工作了,我知道我一定是漏掉了一些愚蠢的东西,但我已经盯着它看了很久了。任何指导将不胜感激。
干杯; NE
valueField
应该按名称指向数据中的实际字段,而您似乎正在分配其值。要修复替换此行:
UserGroupGraph.valueField = item['Users'];
进入这个:
UserGroupGraph.valueField = 'Users';