Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.04.2017, 11:29
Интересующийся
Отправить личное сообщение для Nikk Посмотреть профиль Найти все сообщения от Nikk
 
Регистрация: 04.04.2017
Сообщений: 13

Загрузка массива данных в Google Charts из файла
Пытаюсь вывести график из массива чисел, используя библиотеку Google Charts.
Если вводить массив внутри HTML файла, то все работает:

Код:
var data = google.visualization.arrayToDataTable([
['Значение X','Значение Y1','Значение Y2'],
['Значение X1',  53689,             47895],
['Значение X2',  35687,             42558]
Но если вынести массив во внешний файл data.txt, то график не рисуется. В чем может быть проблема?

<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>
Ответить с цитированием
  #2 (permalink)  
Старый 20.04.2017, 11:57
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nikk,
Уберите type: 'json',
Ответить с цитированием
  #3 (permalink)  
Старый 20.04.2017, 12:10
Интересующийся
Отправить личное сообщение для Nikk Посмотреть профиль Найти все сообщения от Nikk
 
Регистрация: 04.04.2017
Сообщений: 13

Dilettante_Pro,
Убрал, не помогло... При открытии страницы - белый пустой экран.
Ответить с цитированием
  #4 (permalink)  
Старый 20.04.2017, 12:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

мысли вслух строки 21 23 возможно нужно перенести в строку 17
Ответить с цитированием
  #5 (permalink)  
Старый 20.04.2017, 12:21
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nikk,
А у ваc правильный файл data.txt?
поставьте для проверки alert(json)
перед var data = google.visualization.arrayToDataTable(json);

Должна быть одна сплошная строка

Последний раз редактировалось Dilettante_Pro, 20.04.2017 в 12:25.
Ответить с цитированием
  #6 (permalink)  
Старый 20.04.2017, 12:41
Интересующийся
Отправить личное сообщение для Nikk Посмотреть профиль Найти все сообщения от Nikk
 
Регистрация: 04.04.2017
Сообщений: 13

Dilettante_Pro,
Сделал
function drawChart() {
    $.ajax({
        url: 'data.txt',
        success: function (json) {
alert(json);
            var data = google.visualization.arrayToDataTable(json);


Алерт не выходит вообще. И не выходит даже в том случае, если сделать просто текстовый alert('текст'). В чем моя ошибка?
Ответить с цитированием
  #7 (permalink)  
Старый 20.04.2017, 12:45
Интересующийся
Отправить личное сообщение для Nikk Посмотреть профиль Найти все сообщения от Nikk
 
Регистрация: 04.04.2017
Сообщений: 13

Сообщение от рони Посмотреть сообщение
мысли вслух строки 21 23 возможно нужно перенести в строку 17
Попробовал, не помогло. Строки таким образом расположены в примерах от Google и прекрасно работают, если не пробовать подключить внешний массив...
Ответить с цитированием
  #8 (permalink)  
Старый 20.04.2017, 12:50
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nikk,
Скорее всего дело в асинхронности ajax - функция drawChart завершает работу, не дожидаясь success.

Попробуйте добавить в ajax
async: false,
Ответить с цитированием
  #9 (permalink)  
Старый 20.04.2017, 13:04
Интересующийся
Отправить личное сообщение для Nikk Посмотреть профиль Найти все сообщения от Nikk
 
Регистрация: 04.04.2017
Сообщений: 13

Dilettante_Pro,
Добавил, без результата...
$.ajax({
async: false,
        url: 'data.txt',
Ответить с цитированием
  #10 (permalink)  
Старый 20.04.2017, 14:38
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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 должно быть вне функции. Иначе - область видимости
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Ajax и загрузка файла клиенту alexgluker jQuery 2 08.09.2015 15:30
Google Chorme. Перехват данных Valdemor Opera, Safari и др. 1 19.06.2013 21:58
загрузка джаваскрипта file by file с номером ревизии(последней) в урле для файла sergdev Ваши сайты и скрипты 7 13.04.2010 10:52
загрузка данных из XML, почему загружает только в Explorer asked86 AJAX и COMET 2 18.12.2009 16:29