Получить LatLon от Google с Mootools Request.JSONP - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь получить данные LatLon из запроса в Google. Запрос Request.JSONP работает нормально и возвращает идеальные данные, но при onSucces он возвращает ошибку «Недопустимая метка».

Вот мой сценарий:

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);
    }
});

Ответ выглядит так:

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

Но тогда Firebug сообщает об ошибке «недопустимая метка» в «status»: «OK», \ n '

Кто-нибудь понял, как решить эту проблему?

Большое спасибо.

1 Ответ

1 голос
/ 09 октября 2010

Причина в том, что googlemaps API прекратил обслуживать JSONP и возвращает обычный JSON (из того, что я понял).

Что делает mootools, отправляет callback=Request.JSONP.request_map.request_0, на который сервер должен ответить как:

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

... то есть, если callback = не игнорировался.Так как он игнорирует его, ответ оценивается и вместо этого «запускается» как простой JSON, что приводит к недопустимому исключению метки. В любом случае

, я рекомендую прочитать Как выполнять междоменные вызовы AJAX в GoogleAPI Карт? - кажется, что их решение js здесь вполне жизнеспособно (кроме дополнительных затрат скрипта)

...