Google n'est pas défini à l'aide de Google Visualization API; Peut-être la faute de jQuery

Je reçois la même erreur que celle de cette question à laquelle il n'y a pas de réponse. Pour élaborer, j'essaie de charger cette démo dans mon code. Je l'ai modifié légèrement en ce sens que je ne comprend pas leur code dans n'importe quelle étiquette d'en-tête – ce fragment de code particulier sera chargé par jQuery. Quoi qu'il en soit, mon code ressemble à ceci:

<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> 

Cette section de code réside dans un div dont la visibilité est basée au besoin. Le lot entier (la page entière ici) est retourné à la suite d'un appel ajax.

La théorie qui utilise le gestionnaire $(document).ready() jQuery signifie que google devrait être chargé lorsque le document est prêt.

Cependant, je reçois ceci:

Google n'est pas défini comme une capture d'écran de message d'erreur.

Indépendamment du fait que cette section soit ou non ready() ou non. Maintenant, voici le vrai kicker: dans le dom explorer, je peux trouver ledit objet:

Donc, google existe réellement. Cette image le prouve.

Quelqu'un peut-il m'expliquer d'abord pourquoi cela se passe-t-il et ensuite ce que je fais pour le réparer?

Étant un générateur naïf de développeur javascript, j'ai essayé d'inclure les scripts google dans mes tags de tête. Cela a ensuite produit quelque chose comme cette question ($ non défini) sauf que nous ne chargeons pas jQuery depuis Google, nous l'hébergeons localement.

Nous chargeons avec succès un certain nombre d'autres extensions jQuery en ligne de cette façon ainsi que des parties supplémentaires du code jQuery, donc à mon avis, cela devrait fonctionner. Je ne sais pas si jQuery entrave Google / vice versa mais ils ne devraient pas l'être.

Pensées?

Supprimer $ (document) .ready devrait résoudre votre problème. J'ai essayé votre code et après avoir commenté $ (document) .ready, cela a fonctionné:

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

Maintenant, pour ce qui est le cas, je ne sais pas … Dans tous les cas, vous ne devriez pas attendre pour document.ready pour appeler google.load; Google.load veillera à ce que, au moment où votre callback drawChart est appelé, il sera sécurisé de l'exécuter.

Vous pouvez charger les graphiques après la chargement de la page mais avec un rappel spécial.

Google.load ("visualisation", "1", {"rappel": drawChart});

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