отправка дат JSON в API Google Maps из Perl - PullRequest
8 голосов
/ 21 февраля 2012

У меня есть небольшое приложение-танцор, которое обслуживает некоторый HTML-код (включая javascript для вызова API Google Charts) и для других URL-адресов запрашивает базу данных и возвращает данные в кодированном формате JSON в форме, которую вы можете передать google.visualization. Таблица данных. Javascript запрашивает у приложения Dancer данные JSON, а затем передает их в API Google Maps. Упрощенная версия:

    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">

      google.load('visualization', '1.0', {'packages':['corechart']});
      google.setOnLoadCallback(initialize);

function initialize() {
    var res = $.ajax({
        url: "/data/2",
        dataType:"json",
        async: false,
        data: "{}",
        contentType: "application/json",
        error: function(jqXHR, textStatus, errorThrown) {
             alert('textStatus ' + textStatus);
             alert('errorThrown ' + errorThrown);
        }
    });
    jsonData = res.responseText;
    var data = new google.visualization.DataTable(jsonData);

    var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
    chart.draw(data, {width: 400, height: 240});

}
    </script>

Проблема в том, что некоторые данные, возвращаемые Perl, включают в себя даты / метки времени и поэтому должны иметь тип, установленный на «datetime»:

{"rows":[{"c":[{"v":"WHAT_CAN_I_PUT_HERE"},{"v":"2095"}]}],"cols":[{"type":"datetime","label":"DTU"},{"type":"number","label":"COUNT"}]}

В Javascript вы можете создать дату для передачи в API Google Maps:

new Date(2012, 1, 08, 09, 32, 0)

Как я могу отправить дату, закодированную в JSON, из Perl, чтобы API-интерфейс Google Charts это понимал? Если вы не можете, какие другие варианты могут быть доступны для меня?

Ответы [ 3 ]

19 голосов
/ 17 апреля 2012

JSON не поддерживает datetime как типы данных.Но согласно документации Google, вы можете просто отправить строку в следующем формате:

JSON не поддерживает значения даты JavaScript (например, «новая дата» (2008,1,28,0,31,26) "; реализация API поддерживает. Однако теперь API поддерживает настраиваемое допустимое представление дат в формате JSON в виде строки в следующем формате: Дата (год, месяц, день [, час, минута, секунда [, миллисекунда]]) где все после дня необязательно, а месяцы начинаются с нуля.

Протокол источника данных Google Chart Tools

10 голосов
/ 16 октября 2012

просто чтобы уточнить: Вы должны записать значение ячейки в виде строки, которая выглядит следующим образом: Дата (год, месяц). для вашего примера:

{"rows":[{"c":[{"v":"Date(year, month)"},{"v":"2095"}]}],"cols":[{"type":"datetime","label":"DTU"},{"type":"number","label":"COUNT"}]}

надеюсь, что это поможет, и исправлю вас, поскольку я использую его в php, а не в perl

3 голосов
/ 01 декабря 2014

Я столкнулся с той же проблемой, и вышеуказанное решение не сработало.После поиска часов я нашел следующий пост, и решение там сработало.

https://groups.google.com/forum/#!msg/google-visualization-api/SCDuNjuo7xo/ofAOTVbZg7YJ

Не включайте «new» в строку json, поэтому оно будет просто: «Date (2012), 1, 08, 09, 32, 0) "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...