我正在尝试从openweathermap获取天气数据。该网址适用于我输入的坐标,在浏览器栏中输入网址时,我可以下载JSON。我正在尝试在我的页面中使用它。当我运行此代码时,在Firebug中,我可以看到HTTP请求获得了200成功代码,但是由于某种原因它没有打印响应。我没有正确使用getJSON吗?

var url = "http://api.openweathermap.org/data/2.5/forecast?lat="+ position.coords.latitude +"&lon=" + position.coords.longitude;

$.getJSON(url, function(res) {
console.log(res);
});

最佳答案

您正在尝试在读取JSONP的函数中读取跨域JSON。
无法跨域JSON读取。

尝试JSONP请求;通过附加回调

    var url = "http://api.openweathermap.org/data/2.5/forecast?lat=" +
position.coords.latitude +"&lon=" + position.coords.longitude + "&callback=?" ;

    $.getJSON(url, function(res) {
    console.log(res);
    });


JSON响应是这样的:
{ 'a':22 }

JSONP响应类似于:
myFunction({'a':22} ),其中myFunction是作为callback传递的值

jQuery不需要回调函数的名称,但是需要在URL中提及callback,以便它可以将其标识为JSONP请求。


  JSONP
  
  如果URL包含字符串“ callback =?” (或类似的定义,
  服务器端API),则该请求将被视为JSONP。看到
  $ .ajax()中有关jsonp数据类型的讨论,以获取更多详细信息。

关于javascript - 使用$ .getjson从外部源请求JSON。 200成功但是在哪里呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16323603/

10-12 15:51