我正在使用jQuery访问Yahoo的Geolocation API。即使我能够从他们的服务器成功检索数据,我也无法让jQuery成功解析数据。我已经尝试了$ .ajax()和$ .getJSON,每个都返回相同的失败:parsererror和“invalid label”。
通过我对互联网的挖掘,我发现“无效标签”很可能是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));
}
});
提前非常感谢。
答案 0 :(得分:1)
您尝试访问的API不支持JSONP。因此,由于same origin policy限制,您无法将其与javascript一起使用。尝试在浏览器中粘贴以下网址:
查看完全忽略callback
参数的方式?服务器返回纯JSON,而不是JSONP,这是您需要的。作为一种解决方法,您可以在您的域上编写一个服务器端脚本,作为Yahoo和您的域之间的桥梁。然后,您将把AJAX请求发送到您的脚本。