Local Weather App FreeCodeCamp

时间:2017-03-01 11:45:15

标签: javascript json api openweathermap

试图找出freecodecamp任务,但它甚至无法跟踪youtube教程https://www.youtube.com/watch?v=XZXg_fuyYnI&t=1385s。 请帮忙,这段代码有什么问题?

var API_KEY = "xxxxxxxxxxxxxxxxxxxxxx";

$(function () {
    var loc;
    $.getJSON('http://ipinfo.io', function (d) {
        console.log("assigning the data...")
        loc = d.loc.split(" , ");
        console.log(loc);
        $.getJSON('http://api.openweathermap.org/data/2.5/weather?lat=' + loc[0] + '&lon=' + loc[1] + '&APPID=' + API_KEY, function (wd) {
            console.log("got the data ,", wd);
        })
    })
})

2 个答案:

答案 0 :(得分:0)

不要拆分“,”(注意空格)仅在“,”

上拆分

loc = d.loc.split(" , ");

可是:

loc = d.loc.split(",");

来自https://www.w3schools.com/jsref/jsref_split.asp

  

语法:string.split(separator,limit)

     

分隔符:可选。指定字符或常规字符   表达式,用于拆分字符串。如果省略,整个   将返回字符串(只包含一个项目的数组)

     

限制:可选。一个整数,指定拆分项数   分裂限制后不会包含在数组

通过使用包含多个字符的字符串,我认为JavaScript正在将其解释为正则表达式。

答案 1 :(得分:0)

如前所述,问题是:逗号周围是否存在空格:

loc = d.loc.split(" , ");
相反,应该是:

loc = d.loc.split(",");

原因:来自ipinfo.io IP lookup API的响应包含一个JSON对象,其中loc字段是以 no 空格分隔的坐标逗号。< / p>

例如:

{
  "ip": "203.205.28.14",
  "hostname": "static.cmcti.vn",
  "city": "Ho Chi Minh City",
  "region": "Ho Chi Minh City",
  "country": "VN",
  "loc": "10.8142,106.6438",
  "org": "AS45903 CMC Telecom Infrastructure Company"
}

建议:当您发布完成的freeCodeCamp挑战时,我也避免公开您的开放天气图私钥appid)(我使用了 CodePen 而且我不喜欢暴露私钥的想法,所以我写了Open Weather Map Proxy一个JS脚本,任何人都可以复制并粘贴到个人新的 Google Scripts App 并将其用作传递服务。)