getJSON
является асинхронным.Сделайте это вместо:
jQuery.getJSON('/data/stats.json', function(chart_data) {
var title_chart = chart_data.chart_title;
jQuery.each(chart_data.stats, function(index, value){
data.addRows(1);
data.setValue(index, 0, value.chart_label);
});
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, {width: 450, height: 300, title: title_chart});
});
Проблема в том, что getJSON
возвращается немедленно.Только позже, когда запрос завершится, будет вызван ваш обратный вызов.Тем временем, chart.draw
, возможно, уже бежал.Перемещая этот код в функцию обратного вызова, мы гарантируем, что он выполняется в нужное время.Также обратите внимание, что мы можем устранить глобальные.