我想使用JSON从http://aprs.fi/page/api获取本地化坐标。我在http://api.jquery.com/jQuery.getJSON找到了示例:
<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
{
tags: "cat",
tagmode: "any",
format: "json"
},
function(data) {
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
</script>
当$ .getJSON成功时,它会运行函数(数据),它会在网站上放置4个图像。我将此代码粘贴到我的html文件中并且它可以正常工作,因此我将其更改为从aprs.fi获取JSON数据:
<script>
$.getJSON("http://api.aprs.fi/api/get?name=OH7RDA&what=loc&apikey=_key_&format=json",
function(data)
{
alert("Anything");
});
};
</script>
也许我的查询错了,但即使“Anything”也无法在我的屏幕上打印。我不知道如何更改它以使其有效。
答案 0 :(得分:1)
仅仅因为服务可以返回JSON格式的结果并不意味着您可以通过JSONP访问它。该站点必须明确识别此类请求,以便响应作为JSONP响应。 (也就是说,响应必须采用函数调用的形式,并将JSON返回数据作为参数传递给函数。)
答案 1 :(得分:0)
getJSON使用的XHR在Web浏览器中遵循同源策略;您只能将XHR指向与其使用的网页完全相同的服务器,端口和协议组合。如果您的网页在http://example.org:5625上运行,则只能将XHR请求指向http://example.org:5625/some-path-here。
该解决方法称为JSONP,其中资源作为标记加载。但是,有问题的服务需要了解它。您可以判断它是否是因为在附加回调参数后它应该显示类似
的内容callbackname({"the": "respose", "goes": "here"});
即对命名回调的函数调用。但是,如果我理解正确,您使用的服务不支持JSONP。然后,您唯一的选择是创建一个作为代理服务器的服务器端脚本。