我正在使用jquery创建一个天气应用程序。我遇到的问题是在我的getJSON中我想使用我使用您当前的纬度和经度坐标创建的变量。带有openweather api密钥的url在浏览器中加载了json文件,但它似乎不想在我的getJSON中工作。
以下是我的javascript代码,可根据您的位置显示天气信息。
var lat;
var lon;
var jsonURL;
navigator.geolocation.getCurrentPosition(GetLocation);
function GetLocation(location) {
lat = location.coords.latitude;
lon = location.coords.longitude;
jsonURL = 'api.openweathermap.org/data/2.5/weather?lat=' + lat + '&lon=' + lon + '&APPID=example&units=imperial'
}
$("#getWeather").click(function(){
console.log(jsonURL);
$.getJSON(jsonURL , function( data ) {
var items = [];
items = data; $("#weather").text(items.main.temp).append('℉');
});
});
答案 0 :(得分:3)
使用浏览器中的开发者工具。看看控制台。查看“网络”选项卡。这样可以清楚地表明您的网址导致了404错误。
您的网址缺少该计划。它前面需要http://
或https://
。
当您在地址栏中输入URL(缺少方案)时,浏览器会自动插入http://
。
答案 1 :(得分:0)
可能api没有设置为直接从javascript处理请求,经常需要在服务器端编写服务以与api通信,并向您发出AJAX请求服务而不是直接到api。浏览器默认阻止跨域AJAX请求
答案 2 :(得分:0)
实际上如上所述,将您的网址更改为包含:
jsonURL = 'http://api.openweathermap.org/data/...'
并且还制作了JSOP'格式如此:
$("#getWeather").click(function() {
$.getJSON(jsonURL, {
format: "jsonp"
})
.done(function(data) {
console.log(data);
}).fail(function(jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log("Request Failed: " + err);
});
});