Загрузка массива данных в 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, время: 14:37. |