2016-04-22 6 views
1

Привет У меня есть диаграмма, которая является рендерингом, и отображается ключ, а также названия столбцов.Заселение данных AMcharts от 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"); 
    } 


}); 

Это кажется очень близко к работе теперь я знаю, что я просто должен быть что-то не хватаю глупый, но я долго смотрел на него. Любое руководство будет высоко оценено.

Cheers; NE

ответ

1

valueField должен указывать фактическое поле данных по его названию, в то время как вы, кажется, назначаете его значение. Чтобы исправить заменить эту строку:

UserGroupGraph.valueField = item['Users']; 

В это:

UserGroupGraph.valueField = 'Users'; 
+0

Thats большой Martynasma, который работал Спасибо. –

Смежные вопросы