我正在尝试从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/