jQuery:使用$ .getJSON从aprs.fi获取本地化

时间:2011-10-30 17:03:58

标签: javascript jquery json localization getjson

我想使用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”也无法在我的屏幕上打印。我不知道如何更改它以使其有效。

2 个答案:

答案 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。然后,您唯一的选择是创建一个作为代理服务器的服务器端脚本。