2010-10-08 5 views
0

J'essaie de récupérer les données LatLon d'une demande à Google. La requête Request.JSONP fonctionne correctement et renvoie les données parfaites, mais à l'adresse onSucces, elle renvoie une erreur "Label invalide".Obtenir LatLon de Google avec Mootools Request.JSONP

Voici mon script:

var G = {} 

var googleURL = 'http://maps.googleapis.com/maps/api/geocode/json?address='; 

G.google = function(id){ 
    var address = '500-504 W 20th St, New York, NY 10011, USA'; 
    var thisUrl = googleURL + address + '&sensor=true'; 

    new Request.google(thisUrl, { 
     onSuccess: function(data) { 
      console.log(data); 
     } 
    }).send(); 
} 


Request.google = new Class({ 
    Extends: Request.JSONP, 
    options: {}, 
    initialize: function(thisUrl, options) { 
     this.parent(options); 
     this.options.url = thisUrl; 
    }, 
    success: function(data, script) { 
     this.parent(data, script); 
    } 
}); 

La réponse ressemble à:

{ 
    "status": "OK", 
    "results": [ { 
    "types": [ "street_address" ], 

Mais Firebug fait état d'une 'étiquette non valide' erreur au « statut": "OK", \ n '

Quelqu'un a eu une idée comment résoudre ce problème?

Merci beaucoup.

Répondre

1

La raison en est, googlemaps API a maintenant arrêté de servir JSONP et retourne un JSON simple (d'après ce que je comprends).

Qu'est-ce que Mootools n'est, envoyez callback=Request.JSONP.request_map.request_0 auquel le serveur doit répondre comme:

Request.JSONP.request_map.request_0({ 
    "Status": "OK" 
... 
}); 

... qui est, si le rappel = n'a pas été ignorée. Comme il l'ignore, la réponse est évaluée et «exécutée» comme un simple JSON, produisant une exception d'étiquette invalide.

de toute façon, je vous recommande de lire How to make cross-domain AJAX calls to Google Maps API? - semble que leur soltution js est ici tout à fait viable (en dehors de la charge supplémentaire de script)

Questions connexes