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 を使用して非同期呼び出しを行っているため、"done" の形式でコールバック関数を使用するか、独自のカスタム コールバック関数を定義する必要があります。例: 以下に示すように、非同期呼び出しへのコールバックとして "done" を使用できます。

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

done で定義された関数は、AJAX 呼び出しが成功したときに実行されます。

于 2016-06-05T02:31:51.527 に答える