#javascript #jquery
#javascript #jquery ( jquery )
Вопрос:
Я новичок в JavaScript и пытаюсь запустить функцию JavaScript / jQuery, где Firefox выдает мне следующую ошибку:
Uncaught ReferenceError: latitude is not defined
getHighLow http://localhost:5000/static/weatherballoon.js:54
<anonymous> http://localhost:5000/static/weatherballoon.js:63
weatherballoon.js:54:5
Код, на который делается ссылка, приведен ниже.
function getHighLow(){
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' cityID 'amp;key=' geocodekey, function(data){
latitude = data.results[0].geometry.location.lat;
longitude = data.results[0].geometry.location.lng;
});
$.getJSON('https://api.openweathermap.org/data/2.5/onecall?lat=' latitude 'amp;lon=' longitude 'amp;exclude={alerts,minutely,hourly}amp;appid=' owmkey, function(data){
var tempmin = Math.round(data.daily[0].temp.min) 'amp;deg;';
var tempmax = Math.round(data.daily[0].temp.min) 'amp;deg;';
document.getElementById('tempmin').innerHTML = tempmin;
document.getElementById('tempmax').innerHTML = tempmax;
});
}```
Комментарии:
1. используйте
var
ключевое слово слева рядом с долготой2. @UmairMubeen Я попытался использовать var, но ошибка все еще сохраняется
3. несте ваши запросы, они находятся на одной и той же «высоте» / уровне. Как это сделал @barmar в своем ответе.
Ответ №1:
$.getJSON()
является асинхронным. Вы пытаетесь использовать переменные до того, как они будут установлены в обратном вызове.
Вам нужно выполнить второе getJSON
в функции обратного вызова первого.
function getHighLow() {
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' cityID 'amp;key=' geocodekey, function(data) {
const latitude = data.results[0].geometry.location.lat;
const longitude = data.results[0].geometry.location.lng;
$.getJSON('https://api.openweathermap.org/data/2.5/onecall?lat=' latitude 'amp;lon=' longitude 'amp;exclude={alerts,minutely,hourly}amp;appid=' owmkey, function(data) {
var tempmin = Math.round(data.daily[0].temp.min) 'amp;deg;';
var tempmax = Math.round(data.daily[0].temp.min) 'amp;deg;';
document.getElementById('tempmin').innerHTML = tempmin;
document.getElementById('tempmax').innerHTML = tempmax;
});
});
}
Ответ №2:
function getHighLow(){
var latitude=0;
var longitude=0;
$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' cityID 'amp;key=' geocodekey, function(data){
latitude = data.results[0].geometry.location.lat;
longitude = data.results[0].geometry.location.lng;
});
$.getJSON('https://api.openweathermap.org/data/2.5/onecall?lat=' latitude 'amp;lon=' longitude 'amp;exclude={alerts,minutely,hourly}amp;appid=' owmkey, function(data){
var tempmin = Math.round(data.daily[0].temp.min) 'amp;deg;';
var tempmax = Math.round(data.daily[0].temp.min) 'amp;deg;';
document.getElementById('tempmin').innerHTML = tempmin;
document.getElementById('tempmax').innerHTML = tempmax;
});
}```
Комментарии:
1. Это предотвратит появление сообщения об ошибке, но не поместит возвращаемые значения во второй URL-адрес из-за асинхронности.