使用Mootools Request.JSONP从Google获取LatLon

时间:2010-10-08 09:06:51

标签: mootools request jsonp

我正在尝试将请求中的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在“状态”报告“无效标签”错误:“确定”,\ n'

任何人都知道如何解决这个问题?

非常感谢。

1 个答案:

答案 0 :(得分:1)

原因是,googlemaps API现在已停止提供JSONP并返回普通JSON(从我收集的内容)。

mootools的作用是,发送服务器应该回复的callback=Request.JSONP.request_map.request_0

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

...也就是说,如果没有忽略callback =。由于它忽略了它,因此响应被评估并作为简单的JSON“运行”,产生无效的标签异常。

无论如何,我建议你阅读How to make cross-domain AJAX calls to Google Maps API? - 似乎他们的js soltution在这里完全可行(除了额外的脚本开销)