使用混合http和https协议的jQuery getJSON方法
所以现在我正在开发FCC本地天气应用程序,从我使用的天气API检索数据时遇到了一些困难。我决定使用黑暗天空API而不是建议的开放天气API来改变现状。这就是我到目前为止所做的:使用混合http和https协议的jQuery getJSON方法,jquery,json,Jquery,Json,所以现在我正在开发FCC本地天气应用程序,从我使用的天气API检索数据时遇到了一些困难。我决定使用黑暗天空API而不是建议的开放天气API来改变现状。这就是我到目前为止所做的: $(document).ready(function() { var lat, lon, city, api, temp, sum, windSpeed, percip; var apiKey = "##########################"; $.getJSON("http://ip-
$(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,都不会返回任何数据
我希望这是足够的信息。您缺少的是
回调
查询。在
api
变量定义中,添加回调=?
请尝试以下操作。api='1〕https://api.forecast.io/forecast/“+apiKey+”/“+lat+”,“+lon+”?回调=?”代码>
测试
下面是JSFIDLE中的一个测试:
您能更清楚地解释一下问题是什么吗?控制台日志,或将其设置为可运行代码?没有看到函数中引入了apiKey
。您只引入了data1
@Esko我将apiKey定义为第一个.getJSON方法之前的唯一api键,但出于隐私原因,我将其从示例代码中排除。@Brianlmerrit的核心是我需要它能够运行,但是我想测试我是否可以从api中检索数据,这就是为什么我在那里有console.log行。@ChristianTodd-您仍然没有解释您的问题,也没有共享console日志。什么不起作用?是的!这正是我所需要的。非常感谢你。你能解释一下为什么在这种情况下我需要回调查询吗?@ChristianTodd-回调参数传递一个函数作为回调。如果使用,将使用异步HTTP调用,并且不会直接返回forecast对象,而是将其传递给回调函数。确保它可以接受它。查看JSONP:下面是一个示例$。指定了JSONP
的ajax
:。这里解释如何使用JSONP
@ChristianTodd-如果您的问题已经得到回答,那么您将投票支持我的答案,并选择此作为您的问题答案,这样我就可以获得分数/学分。谢谢,对不起。我还没来得及投你一票,因为我还是个新手(