我目前正在我的学校网站上工作(VWO的最终论文,这是荷兰中学的最后一年),在该网站上有一个侧边栏,该侧边栏应该通过API来提供当前的温度我来自OpenWeatherMap。
但是搜索了几个小时之后,我仍然不知道应该怎么做。
最近几天我刚刚“学习”了html和css,所以我对它们的了解仍然是最低限度,而且,据我所知,我需要JavaScript来解决这个问题,但我仍然没有完全要么明白。
我目前在.html中有以下代码,我想显示从OpenWeatherMap API而不是6度获取的当前温度:
<a href="#" style="float:right;">Outside Temp: 6℃</a>
(原因是没有目的地的链接是因为在带有引导程序的“侧边栏”中看起来更好)
但是我不知道如何将6摄氏度更改为276.01开尔文,这是我从我的API JSON网站获得的数字:
{"coord":{"lon":5.39,"lat":51.5},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"base":"stations","main":{"temp":276.01,"pressure":1008,"humidity":69,"temp_min":275.15,"temp_max":277.15},"visibility":10000,"wind":{"speed":5.1,"deg":70},"clouds":{"all":90},"dt":1542749460,"sys":{"type":1,"id":5208,"message":0.0034,"country":"NL","sunrise":1542697565,"sunset":1542728514},"id":2759040,"name":"Best","cod":200}
所以我一直在网上和w3schools中浏览和搜索,并尝试根据w3schools使用以下脚本从API获取数据:
function loadDoc() {
var openweathermapapi = new XMLHttpRequest();
openweathermapapi.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var temperature = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = this.responseText;
}
};
openweathermapapi.open("GET", "http://api.openweathermap.org/data/2.5/weather?q=Best&APPID=9c0299218db10c8423221d49842d8488", true);
openweathermapapi.send();
}
按下运行loadDoc脚本的按钮后,我获得了完整的网站,但是我只希望“ main”变量中的“ temp”部分,却不知道如何获得它。
谢谢
PS:如果您不想回答这个问题,我会完全理解,因为我可能做的是完全错误的事情或正在搜索错误的事情。我可能没有理由寻求帮助,因为我对编程还没有足够的了解,而且我不知道这些问题是否可以接受,因为我在FAQ中没有找到任何答案
答案 0 :(得分:0)
这是获取当前位置的天气详细信息的示例
首先使用此获取您当前系统的位置
if a in dict: return (dict[a], counter)
然后,它会在json中返回您的位置详细信息
此代码可在位置上输入整个数据并将其设置为您的标签
var getIP = 'http://ip-api.com/json/';
以上代码的解释:-
示例json返回
var weatherjson = "";
var getIP = 'http://ip-api.com/json/';
var openWeatherMap = 'http://api.openweathermap.org/data/2.5/weather'
$.getJSON(getIP).done(function(location) {
$.getJSON(openWeatherMap, {
lat: location.lat,
lon: location.lon,
units: 'metric',
APPID: 'APIKEY'
}).done(function(weather) {
//set temperature from json to your <a> tag
$('#mytemp').text(weather.main.temp);
})
})
主列包含您自己的位置名称(TEMP)
{
"coord": {
"lon": -122.08,
"lat": 37.39
},
"weather": [
{
"id": 721,
"main": "Haze",
"description": "haze",
"icon": "50n"
},
{
"id": 711,
"main": "Smoke",
"description": "smoke",
"icon": "50n"
}
],
"base": "stations",
"main": {
"temp": 11.84,
"pressure": 1016,
"humidity": 81,
"temp_min": 10,
"temp_max": 13.3
},
"visibility": 11265,
"wind": {
"speed": 1.13,
"deg": 128.002
},
"clouds": {
"all": 90
},
"dt": 1542782400,
"sys": {
"type": 1,
"id": 471,
"message": 0.003,
"country": "US",
"sunrise": 1542812064,
"sunset": 1542848035
},
"id": 420006353,
"name": "Mountain View",
"cod": 200
}
现在我们需要在显示级别上显示温度
"main": {
"temp": 11.84,
"pressure": 1016,
"humidity": 81,
"temp_min": 10,
"temp_max": 13.3
},
为您的温度提供一个身份标识,其中包含名为ID的锚定标签“ mytemp”
现在找到ID并更新温度
<a href="#" id="mytemp" style="float:right;">Outside Temp: 6℃</a>