我已经获取API网址并删除了变量并在浏览器中插入了实际的LAT和LONG值,并且它可以正常工作。但是当它在具有LAT和LONG变量的代码中使用时,它不起作用。
我使用类似但不相同的语法来成功拉取和打印LAT和LONG值,然后存储变量。我将变量插入API URL但不打印。我不知道为什么。
谢谢!
这是我的HTML
<html>
<head>
<meta charset="UTF-8">
<title>Today's Weather | Malvin</title>
</head>
<body>
<p id="geoLoc"></p>
<p id="currTemp"></p>
</body>
</html>
这是我的JS / JQuery
//geolocation via freecodecamp exercise
$(document).ready(function(){
if (navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position){
$("#geoLoc").html("latitude: " + position.coords.latitude + "<br>longitude: " + position.coords.longitude);
});
}
//jquery current weather via openweathermapp
var lat = position.coords.latitude;
var long = position.coords.longitude;
var weatherURL = "http://api.openweathermap.org/data/2.5/weather?lat="+lat+"&lon="+long+"&APPID=********f4144190680fc96bd357451d";
$.getJSON(weatherURL, function(data)
{
$('#currTemp').html("current temp: " + data.main.temp);
});
});
答案 0 :(得分:1)
由于您通过.getJSON进行异步调用,因此需要使用&#34; done&#34;形式的回调函数。或者您可以定义自己的自定义回调函数。例如:您可以使用&#34; done&#34;作为异步调用的回调,如下所示。
$.getJSON(weatherURL).done(function(data){
$('#currTemp').html("current temp: " + data.main.temp);
});
当您的AJAX调用成功时,将执行done定义的函数。