所以现在我正在研究FCC本地天气应用程序,我在从我正在使用的天气API中检索数据时遇到了一些困难。我决定在建议的Open Weather API上使用Dark Sky API来改变现状。这就是我到目前为止所做的:
$(document).ready(function() {
var lat, lon, city, api, temp, sum, windSpeed, percip;
var apiKey = "##########################";
$.getJSON("http://ip-api.com/json", function(data1) {
lat = data1.lat;
lon = data1.lon;
city = data1.city;
api = 'https://api.forecast.io/forecast/' + apiKey + '/' + lat + ',' + lon + '';
$.getJSON(api, function(data2) {
temp = data2.currently.temperature;
sum = data2.currently.summary;
windSpeed = data2.currently.windSpeed;
percip = data2.currently.precipProbability;
console.log(temp);
});
});
});
所以现在我可以让ip-api向控制台输出在该调用中分配的任何变量。我的问题是当我尝试检查任何变量值时,我无法第二次调用Dark Sky API向控制台输出任何内容。话虽这么说,连接的api变量将返回我需要的JSON数据,但该方法似乎无法检索它。
我试图在FCC gitter聊天上获得一些帮助,有人建议不要混用http和https协议,但是切换到相同的协议,无论是http还是https都不会返回数据。
我希望这是足够的信息。
答案 0 :(得分:1)
您缺少的是callback
查询
在api
变量定义中,添加?callback=?
请尝试以下方法
api = 'https://api.forecast.io/forecast/' + apiKey + '/' + lat + ',' + lon + '?callback=?';
<强> TEST 强>
这是JSFiddle中的一个测试:
https://jsfiddle.net/Esko/hqnszd5t/