javascript检索json Darksky.com API数据天气
我试图从Darksky.com的API中检索JSON数据,这是一种天气数据,在此之前,我成功地从freegoip.com API中检索到了纬度和经度 然而,Darksky API在响应所需的天气数据之前需要经度和纬度。这里的问题是,在提供了所需的数据之后,我无法从Darksky检索JSON数据(温度、当前天气状态),即使我遵循了检索第一个数据的相同说明。任何想法都是值得欣赏的,以下是我的代码片段:javascript检索json Darksky.com API数据天气,javascript,jquery,json,api,Javascript,Jquery,Json,Api,我试图从Darksky.com的API中检索JSON数据,这是一种天气数据,在此之前,我成功地从freegoip.com API中检索到了纬度和经度 然而,Darksky API在响应所需的天气数据之前需要经度和纬度。这里的问题是,在提供了所需的数据之后,我无法从Darksky检索JSON数据(温度、当前天气状态),即使我遵循了检索第一个数据的相同说明。任何想法都是值得欣赏的,以下是我的代码片段: $(文档).ready(函数(){ var darkSkyKey=“c565381ee9bf05
$(文档).ready(函数(){
var darkSkyKey=“c565381ee9bf05151d254ffa7ca96313”;
var regionLink=”http://freegeoip.net/json/";
$.getJSON(regionLink,函数(数据){
var国家代码=data.country\u代码;
var country=data.country\u name;
var ip=data.ip;
var时区=data.time\u zone;
var纬度=data.latitude;
var longitude=data.longitude;
});
$.get(regionLink,函数(响应){
$(“#位置”).html(“位置:“+response.city+”,“+response.region_name+”。纬度:“+response.Latitude+”,经度:“+response.longitude”);
}“jsonp”);
var weatherLink=”https://api.darksky.net/forecast/c565381ee9bf05151d254ffa7ca96313/“+纬度+”,“+经度+”.json”;
$.getJSON(weatherLink,函数(data2){
var时区=data2.0时区;
var温度=当前温度;
var status=data2.summary;
});
$.get(weatherLink,函数(response2){
$(“#temp”).html(“现在的温度是:”+response2.temperature);
$(“#weather”).html(“天气状态:+response2.Status”);
}“jsonp”);
});代码>
正文{
背景色:黑色;
}
.座右铭{
利润上限:-21px;
字体系列:“考山体”,草书;
颜色:橙色;
文本对齐:居中;
字体大小:53px;
}
.背线{
显示:块;
保证金:自动;
}
.中线{
利润上限:-29px;
高度:260px;
对齐项目:居中;
}
.weatherimage{
背景色:当前颜色;
边界半径:113px;
边框:2倍纯色橙色;
位置:相对位置;
高度:262px;
显示:块;
保证金:自动;
宽度:40%;
动画名称:脉冲;
动画迭代次数:无限;
}
.imgPartlycloudy{
高度:250px;
左边缘:35%;
位置:绝对位置;
}
.imgRain{
高度:250px;
左边缘:35%;
位置:绝对位置;
显示:无;
}
.imgCloudy{
高度:250px;
左边缘:35%;
位置:绝对位置;
显示:无;
}
imgSunny先生{
高度:250px;
左边缘:35%;
位置:绝对位置;
显示:无;
}
.最后一行{
高度:222px;
}
.城市{
颜色:橙色;
字体大小:22px;
字体系列:“考山体”,草书;
}
.温度{
颜色:橙色;
字体大小:22px;
字体系列:“考山体”,草书;
}
.地位{
颜色:橙色;
字体大小:22px;
字体系列:“考山体”,草书;
}
.要素{
文本对齐:居中;
}
欢迎使用天气应用程序
天气状况
城市
温度
您的问题是darksky站点不允许跨域请求
这段代码的工作原理是我使用代理服务来服务结果
getLocation()
.then(function (data) {
var url ='https://crossorigin.me/https://api.darksky.net/forecast/c565381ee9bf05151d254ffa7ca96313/' + data.latitude + ',' + data.longitude;
getDarkSky(url)
.then(function (res) {
console.log(res)
}).catch(function (err) {
console.log(err)
})
});
function getLocation() {
return $.getJSON(rl).done()
}
function getDarkSky(url) {
return $.getJSON(url).done()
}
有关完整解决方案,请参阅此SA帖子
请您详细说明我尝试使用的最后两个函数,但将数据输入htm,但我仍然无法从API检索数据。只需调用请求的URL,即可使用.done()表示数据检索已完成。这允许您使用callfunction()在主函数中等待结果;对不起,这对我来说有点棘手。。。。那么,我应该在哪里实现我的代码($(“#temp”).html(“Temprature now is:+response2.temperature”))以在我的页面上显示它呢?用代码替换console.log(res),res.variable将包含来自darksky的返回