во-первых, jsapi
- это старая версия Google-карт и больше не должна использоваться.
используйте loader.js
вместо этого, запишите путь ...
<script src="https://www.gstatic.com/charts/loader.js"></script>
это только изменит оператор load
.
далее, диаграммы Google будут ждать загрузки страницы по умолчанию.
нет необходимости помещать свой код в функцию готовности сокращенного документа jquery -> $(function () {
размещение функции DrawDonut
внутри функции готовности,
выводит его из области видимости из обратного вызова Google.
поскольку оно не может быть достигнуто, оно не запускается.
last, обратные вызовы success
& error
для $.ajax
устарели,
вместо этого используйте обещания done
& fail
.
рекомендуем настроить аналогично следующему фрагменту ...
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var options = {
title: 'Use distributed on units',
pieHole: 0.4,
colors: ['#286090', '#d7d7d7'],
width: 900,
height: 600
};
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: 'Default.aspx/GetChartData',
data: '{}'
}).done(function (response) {
drawchart(response.d);
}).fail(function () {
console.log('Error loading data! Please try again.');
});
function drawchart(dataValues) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'UnitID');
data.addColumn('number', 'TotalUse');
for (var i = 0; i < dataValues.length; i++) {
data.addRow([dataValues[i].UnitID, dataValues[i].TotalUse]);
}
new google.visualization.PieChart(document.getElementById('chart')).
draw(data, options); // <-- use options already defined above
}
});
</script>
<div id="chart"></div>
примечание: вы определяете свой options
объект, здесь ...
var options = {
pieHole: 0.4,
colors: ['#286090', '#d7d7d7']
};
но не использовать его для рисования графика, здесь ...
draw(data, { title: "Use distributed on units" });