具有混合http和https协议的jQuery getJSON方法

时间:2016-05-26 22:43:25

标签: jquery json

所以现在我正在研究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都不会返回数据。

我希望这是足够的信息。

1 个答案:

答案 0 :(得分:1)

您缺少的是callback查询 在api变量定义中,添加?callback=?

请尝试以下方法 api = 'https://api.forecast.io/forecast/' + apiKey + '/' + lat + ',' + lon + '?callback=?';

<强> TEST
这是JSFiddle中的一个测试:
https://jsfiddle.net/Esko/hqnszd5t/