通过LAT LONG的OpenWeatherMapAPI地理位置无法正常工作或打印

时间:2016-06-05 02:07:38

标签: javascript jquery api geolocation openweathermap

我已经获取API网址并删除了变量并在浏览器中插入了实际的LAT和LONG值,并且它可以正常工作。但是当它在具有LAT和LONG变量的代码中使用时,它不起作用。

我已提到现有问题herehere

我使用类似但不相同的语法来成功拉取和打印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);
  });
});

1 个答案:

答案 0 :(得分:1)

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

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

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