Загрузка массива данных в Google Charts из файла
Пытаюсь вывести график из массива чисел, используя библиотеку Google Charts.
Если вводить массив внутри HTML файла, то все работает: Код:
var data = google.visualization.arrayToDataTable([
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
$.ajax({
url: 'data.txt',
type: 'json',
success: function (json) {
var data = google.visualization.arrayToDataTable(json);
}
});
}
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(data);
}
</script>
</head>
<body>
<div id="curve_chart"></div>
</body>
|
Nikk,
Уберите type: 'json', |
Dilettante_Pro,
Убрал, не помогло... При открытии страницы - белый пустой экран. |
:write: мысли вслух строки 21 23 возможно нужно перенести в строку 17
|
Nikk,
А у ваc правильный файл data.txt? поставьте для проверки alert(json) перед var data = google.visualization.arrayToDataTable(json); Должна быть одна сплошная строка |
Dilettante_Pro,
Сделал
function drawChart() {
$.ajax({
url: 'data.txt',
success: function (json) {
alert(json);
var data = google.visualization.arrayToDataTable(json);
Алерт не выходит вообще. И не выходит даже в том случае, если сделать просто текстовый alert('текст'). В чем моя ошибка? |
Цитата:
|
Nikk,
Скорее всего дело в асинхронности ajax - функция drawChart завершает работу, не дожидаясь success. Попробуйте добавить в ajax async: false, |
Dilettante_Pro,
Добавил, без результата...
$.ajax({
async: false,
url: 'data.txt',
|
Nikk,
1. Проверьте свой файл, просто исполнив вот такой скрипт
$.ajax({
url: 'data.txt',
success: function (json) {
alert(json);
}
});
Или добавьте кроме success: еще и error: 2. В работающем варианте у вас так?
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Значение X','Значение Y1','Значение Y2'],
['Значение X1', 53689, 47895],
['Значение X2', 35687, 42558]
]);
}
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(data);
}
</script>
Вообще-то объявление var data должно быть вне функции. Иначе - область видимости |
В работающем вариант именно так, это кусок кода из справки google.
Нашел полностью работоспособный вариант построения графика по данным из внешнего массива, возможно кому-то пригодится: http://bl.ocks.org/espinielli/8d106a5cf9aa99734d43 |
| Часовой пояс GMT +3, время: 03:35. |