2010-10-17 9 views
2

Quelqu'un peut-il m'aider à comprendre pourquoi le code suivant n'affiche aucun contenu dans la deuxième alerte? Parcourir la même URL que je passe à getJSON() produit une sortie dans la fenêtre de mon navigateur.jQuery Google Maps question

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
</head> 
<body> 
    <script> 
     $.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address=Chicago,IL&sensor=false', 
      function(json, textStatus) { 
       alert("textStatus:" + textStatus); 
       var out = ''; 
       for (var i in json) { 
        out += i + ": " + json[i] + "\n"; 
       } 
       alert(out); 
       //alert("JSON Data:" + json.results[0].formatted_address); 
      }); 
    </script> 
</body> 
</html> 

Répondre

1

Le problème était lié à same origin policy. This post était très utile. J'ai modifié mon code pour utiliser le Client-side Google Maps Geocoding API. Voici le code de fonctionnement:

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
    <script type="text/javascript"> 
     var geocoder; 
     $(document).ready(function() { 
      geocoder = new google.maps.Geocoder(); 
     }); 
     function codeAddress() { 
      var address=$('#address').val(); 
      geocoder.geocode({ 'address': address}, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        $('#location').html('<p><b>Location:</b>' + results[0].geometry.location + '</p>'); 
       } else { 
        alert("Geocode was not successful for the following reason: " + status); 
       } 
      }); 
     } 
    </script> 
</head> 
<body> 
    <div> 
     <input id="address" type="textbox" value="Chicago,IL"/> 
     <input type="button" value="Geocode" onclick="codeAddress()" /> 
    </div> 
    <div id="location"> 
    </div> 
</body> 
</html> 
0

Il semble que votre variable obj est définie. Vouliez-vous dire:

out += i + ": " + json[i] + "\n"; 
+0

Doh! Bon appel. J'ai corrigé ceci dans mon post original, mais la deuxième alerte n'a toujours aucun contenu. – nhavens

+0

Essayez d'ajouter une alerte à l'intérieur de la boucle for. Ensuite, cassez après le premier, sinon vous rejetterez les boîtes de dialogue pour les prochaines heures ... – TuomasR

+0

J'ai essayé de déplacer l'alerte (à l'extérieur) à l'intérieur de la boucle for, mais j'ai ensuite arrêté de recevoir une seconde alerte. – nhavens