0

我已经获取了 API URL 并删除了变量并在浏览器中实际插入了 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);
  });
});
4

1 回答 1

1

由于您是通过 .getJSON 进行异步调用,因此您需要使用“完成”形式的回调函数,或者您可以定义自己的自定义回调函数。例如:您可以使用“完成”作为异步调用的回调,如下所示。

$.getJSON(weatherURL).done(function(data){
     $('#currTemp').html("current temp: " + data.main.temp);
});

done 定义的函数将在您的 AJAX 调用成功时执行。

于 2016-06-05T02:31:51.527 回答