本地天气应用程序FreeCodeCamp
问题描述:
试图找出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);
})
})
})
答
不要拆的 “”(注意空格)的拆分只是 “”
不:
loc = d.loc.split(" , ");
但是:
loc = d.loc.split(",");
从https://www.w3schools.com/jsref/jsref_split.asp
语法:string.split(separator,limit)
separator:可选。指定用于拆分字符串的字符或常规的 表达式。如果省略,则返回整个 字符串(仅包含一个项目的数组)
limit:可选。指定拆分的数量的整数,项目 分割限制之后将不会被包含在阵列
通过使用一个以上的字符的字符串,我在想,JavaScript是解释它作为一个经常性表达。
答
正如已经提出的,问题是空间中存在围绕逗号:
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并将其用作通行服务)。
有没有发生错误? – DanilGholtsman
我现在唯一可以假设的
DanilGholtsman