Google Visualization API работает локально, но не на внешнем сервере? - PullRequest
0 голосов
/ 13 мая 2011

Я строю динамическую круговую диаграмму для отображения результатов выборов, используя API визуализации Google и jQuery, и у меня она (вроде) работала на моем локальном компьютере, и я хотел получить некоторую обратную связь, поэтому загрузил ее на внешний сервер, теперь все, что я пытаюсь загрузить, выдает ошибку «Нет данных».

У меня есть два файла, один из которых получает данные из базы данных и преобразует их в JSON, а другой отображает визуализацию в зависимости от того, какие области проверяются. Вы можете увидеть это здесь:

http://www2.lichfielddc.gov.uk/sandbox/pie.php?electionid=14

Есть идеи, где я иду не так?

Приветствия

Ответы [ 3 ]

0 голосов
/ 13 мая 2011

Пошаговое выполнение кода: к тому времени, когда вы вызываете метод draw (), в объекте «data» уже нет данных. Вероятно, это связано с тем, что изменения в объекте данных находятся в разных областях.

0 голосов
/ 13 мая 2011

Я согласен с Tribal, что это проблема синхронизации, потому что живая версия иногда работает. Есть пара других скрывающихся ошибок, которые не стоят за настоящей проблемой, но ...

polls.join(",");
url = "http://www2.lichfielddc.gov.uk/sandbox/piedata.php?pollid=" + polls;

polls.join() возвращает строку, соединение не выполняется in-situ. И url не объявляется как локальная переменная

0 голосов
/ 13 мая 2011

Думаю, что я что-то понимаю.

Я скачал его и протестировал локально, и, как вы сказали, он работает нормально.Однако в источнике данных, который я использовал (data.php), если я поставил задержку (sleep (1)), он перестал работать.Я думаю, это потому, что вы рисовали диаграмму из обратного вызова AJAX.

Попробуйте:

    function drawVisualization() {          
    $('.poll').click(function() {

    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Party');
    data.addColumn('number', 'Votes');

        var polls = [];

        $('.poll:checked').each(function(){
            polls.push(this.value);
        });

        polls.join(",");

        url = "http://www2.lichfielddc.gov.uk/sandbox/piedata.php?pollid=" + polls;

        $.getJSON(url, function(d) {

            data.addRows(d.length);

            var items = [];
            var num = 0;

            $.each(d, function(i, o) {

                console.log(o);

                data.setValue(num, 0, o['party']);
                data.setValue(num, 1, o['votes']);

                num++;

            });

            new google.visualization.PieChart(document.getElementById('visualization')).
            draw(data);
        });
    });
...