【发布时间】:2016-11-21 04:06:04
【问题描述】:
我是 JavaScript 的新手。现在我解决了这个问题,我遇到了一个非常奇怪的错误。我正在构建一个应用程序来显示您所在位置的当前天气,为此我需要对天气数据进行 API 调用。我从here 获得天气数据,起初,我的代码正在运行并获取当地天气(对于给定的纬度和经度)。但是,我正在对代码进行编辑以添加功能,但我的代码突然停止工作。我试图修复它,但我很困惑,我不知道我坏了什么。希望大家帮忙!!
这是我的参考代码:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
lat = position.coords.latitude;
long = position.coords.longitude;
console.log(lat);
$.get('http://api.openweathermap.org/data/2.5/weather?lat=' + lat + '&lon=' + long + '&appid=00d71b03a3c50910d8f4f0ea51703bb5', function(data) {
console.log(data);
if(lat == 300 || long == 300) {
alert("Enable your location to see how the weather is");
} else {
$("#location").text(data.name);
var weather = data.weather[0].description;
$("#weather").text(weather);
temp = Math.round((data.main.temp - 273.15) * 10) / 10.0;
$("#temperature").text(temp + "\u00B0 C");
var icon = data.weather[0].icon;
$("#picture").attr("src", "http://openweathermap.org/img/w/" + icon + ".png");
}
});
});
};
我在 API 调用下方放置了 console.log(data) 以查看发生了什么,但它没有输出任何内容。很困惑,请帮忙!
【问题讨论】:
-
如果
$.get没有返回任何内容,则问题出在其他地方。$.get应该返回请求的结果。这里的数据应该是data.data,因为您调用的是结果data. -
您的代码对我有用。我正在使用 jquery 在 document.ready 事件中本地运行它。但是,它在堆栈 sn-p 上不起作用。你在什么环境下运行?
-
是的..我错了..有一段时间没有只使用 jQuery..习惯于 IHttpService on angular..似乎它确实会自动返回 result.data 那里..
-
取决于浏览器,如果您的网站是“https”并且您在“http”上请求天气数据,那么它将作为“混合模式内容”阻止它。我知道至少在 Chrome 上你可能会遇到这个问题。只是在黑暗中拍摄
-
你知道 API 有限制......例如,
Do not send requests more then 1 time per 10 minutes from one device/one API key
标签: javascript jquery ajax syntax api-design