我正在尝试将请求中的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'
任何人都知道如何解决这个问题?
非常感谢。
答案 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在这里完全可行(除了额外的脚本开销)