使用jQuery和Yahoo的Geolocation API“无效标签”parsererror

我正在使用jQuery访问Yahoo的Geolocation API。 即使我能够从他们的服务器成功检索数据,我也无法让jQuery成功解析数据。 我已经尝试了$ .ajax()和$ .getJSON,每个都返回相同的失败:parsererror和“invalid label”。

通过我对interwebs的挖掘,我发现“无效标签”很可能是JSON没有被括在括号中的结果,但是在解析之前我无法弄清楚如何将数据包装起来。 我甚至不相信这是问题所在。

这是我的代码:

$(document).ready(function() { var url = "http://where.yahooapis.com/geocode?q=39.0334171,-94.8320452&gflags=R&flags=JT&appid=supersecretappid&callback=?"; $.getJSON(url, function() { alert("success"); }) .error(function(data) { alert(JSON.stringify(data)); }); }); 

仅使用$ .ajax的备用版本如下:

 $.ajax({ url: url, data: {}, dataType: "jsonp", contentType: "text/plain", success: function(json) { alert("success"); }, error: function(x,y,z) { alert(JSON.stringify(x)); } }); 

非常感谢提前。

您尝试访问的API不支持JSONP。 因此,由于相同的原始策略限制,您无法将其与javascript一起使用。 尝试在浏览器中粘贴以下url:

http://where.yahooapis.com/geocode?q=39.0334171,-94.8320452&gflags=R&flags=JT&appid=supersecretappid&callback=foo

看看如何完全忽略callback参数? 服务器返回纯JSON,而不是您需要的JSONP。 作为一种解决方法,您可以在您的域上编写一个服务器端脚本,作为Yahoo和您的域之间的桥梁。 然后,您将AJAX请求发送到您的脚本。