Google не определяется с помощью Google Visualization API; возможно, вина JQuery - PullRequest
8 голосов
/ 05 апреля 2011

Я получаю ту же ошибку, что и в этом вопросе , на который нет ответа.Чтобы уточнить, я пытаюсь загрузить это демо в моем коде.Я немного изменил его, так как я не включаю их код в тег заголовка - этот конкретный фрагмент кода будет загружен в jQuery.В любом случае, мой код выглядит следующим образом:

<script type='text/javascript' 
        src='https://www.google.com/jsapi?key=ABQIAAAAKl2DNx3pM....'>
</script>

<script type='text/javascript'>

function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', '', 'Country');
    data.addColumn('number', 'Population (mil)', 'a');
    data.addColumn('number', 'Area (km2)', 'b');
    data.addRows(5);
    data.setValue(0, 0, 'CN');
    data.setValue(0, 1, 1324);
    data.setValue(0, 2, 9640821);
    data.setValue(1, 0, 'IN');
    data.setValue(1, 1, 1133);
    /* ... */
    var chart = new google.visualization.IntensityMap(
                  document.getElementById('chart_div'));
    chart.draw(data, {});
}

$(document).ready(function() {
    google.load('visualization', '1', {packages:['intensitymap']});
    google.setOnLoadCallback(drawChart);
});
</script>

Этот раздел кода находится в div, видимость которого переключается по мере необходимости.Вся партия (вся страница здесь) возвращается в результате вызова ajax.

Теория здесь, использующая обработчик jQuery $(document).ready(), означает, что Google должен быть загружен, когда документ готов.

Однако я получаю следующее:

Google is not defined error message screenshot.

Независимо от того, находится ли этот раздел внутри ready() или нет.Теперь вот настоящий кикер: в Dom Explorer я могу найти указанный объект:

So google does actually exist. This picture proves it.

Может кто-нибудь, пожалуйста, сначала объясните мне, почему это происходит, а затем, что я делаю, чтобы исправитьэто?

Будучи наивным разработчиком javascript, я попытался включить google-скрипты в свои теги head.После этого возникло что-то вроде этого вопроса ($ не определено), за исключением того, что мы не загружаем jQuery из Google, мы размещаем его локально.

Мы успешно загрузили ряд других расширений jQuery таким образом, а также дополнительные части кода jQuery, поэтому, на мой взгляд, это должно сработать.Я не знаю, мешает ли jQuery Google / наоборот, но этого не должно быть.

Мысли?

Ответы [ 2 ]

10 голосов
/ 05 апреля 2011

Удаление $ (document) .ready должно исправить вашу проблему. Я попробовал ваш код и после комментирования $ (document) .ready, это сработало:

//$(document).load(function() {
    google.load('visualization', '1', {packages:['intensitymap']});
    google.setOnLoadCallback(drawChart);
//});

Теперь о том, почему это так, я не знаю ... В любом случае вам не нужно ждать, пока document.ready позвонит google.load; google.load гарантирует, что к тому времени, когда ваш callback drawChart вызывается, его выполнение будет безопасным.

4 голосов
/ 28 ноября 2012

Вы можете загрузить диаграммы после загрузки страницы, но со специальным обратным вызовом.

google.load ("визуализация", "1", {"обратный вызов": drawChart});

https://developers.google.com/loader/#Dynamic

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