2013-06-14 2 views
0

Я использую API Google Analytics для получения некоторых данных JSON, относящихся к моей учетной записи GA, и хотел бы построить эти данные на круговой диаграмме, используя API визуализации Google. Тем не менее, у меня возникают проблемы с использованием динамических данных для заполнения круговой диаграммы, где я получаю ошибку «Аргумент, заданный addRows, должен быть числом или массивом», если я использую текстовую строку.Динамическое заполнение диаграммы Google с помощью API Analytics JSON

Использование метода addRows(), если я использую вывод переменной 'd' вместо самой переменной, диаграмма отображает штраф, но на диаграмме, похоже, есть проблема с чтением массива прямо из переменной. Кто-нибудь заставлял это работать динамично?

Вот мой код до сих пор:

<div id="chart_div" style="width: 900px; height: 500px;"></div> 

var list = []; 
var j = ""; 
var d = ""; 

$(window).load(function(){ 
    var myjson = 'my json response data'; 
    // my json already fetched from the server using ASP.NET 

    j = $.parseJSON(myjson); 

    $.each(j.rows, function() { 
     list.push("['" + this[0].toString() + "'," + this[7] + "]"); 
    }); 
    // I push all JSON entries from the 'rows' object into an array, 
    // but choose only the 1st and 8th column for the relevant data 
    // and format it to be readable by the Google Visualization API 

    d = "[" + list + "]"; 
}); 


google.load("visualization", "1", {packages:["corechart"]}); 
google.setOnLoadCallback(drawChart); 

function drawChart() { 
    var data = new google.visualization.DataTable();  

    data.addColumn('string', 'Label'); 
    data.addColumn('number', 'Value'); 

    data.addRows(d); 

    var options = { 
     title: 'My Daily Activities' 
    }; 

    var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
    chart.draw(data, options); 
} 

ответ

0

Для тех, кто заинтересован в ответ - я получил эту работу, следуя this ответ в другом потоке, используя() метод Eval. Перестановка "data.addRows (d);" для "data.addRows (eval (d));" сделал трюк.

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