2017-03-01 115 views
-1

试图找出freecodecamp任务,但它甚至不工作,即使跟踪YouTube教程https://www.youtube.com/watch?v=XZXg_fuyYnI&t=1385s。 请帮忙,这段代码有什么问题?本地天气应用程序FreeCodeCamp

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); 
     }) 
    }) 
}) 
+0

有没有发生错误? – DanilGholtsman

+0

我现在唯一可以假设的 DanilGholtsman

回答

0

不要拆的 “”(注意空格)的拆分只是 “”

不:

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

但是:

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

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

语法:string.split(separator,limit)

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

limit:可选。指定拆分的数量的整数,项目 分割限制之后将不会被包含在阵列

通过使用一个以上的字符的字符串,我在想,JavaScript是解释它作为一个经常性表达。

0

正如已经提出的,问题是空间中存在围绕逗号:

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

其中,相反,应该是:

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

原因:从响应ipinfo.io IP lookup API包含一个JSON对象,其中loc字段为坐标逗号,用之间的空格分隔。

例如:

{ 
    "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" 
} 

建议:避免暴露你打开天气地图私有密钥appid)也发布时完成freeCodeCamp挑战(我用CodePen而我却没有像我的私钥被曝光的想法,所以我写了Open Weather Map Proxy一个JS脚本,任何人都可以拷贝&粘贴成一个个人新的谷歌Scrip ts App并将其用作通行服务)。