У меня есть функция на моем сайте, где фон меняется в зависимости от погоды. Я могу успешно изменить фон, если объявить статический почтовый индекс, но я хочу, чтобы иметь возможность автоматически извлекать почтовый индекс из учетных данных пользователя.Не удалось получить глобальную переменную
Я попытался включить скрипт для получения почтового индекса, который работает хорошо, но я не могу понять, как получить почтовый индекс в функцию погоды. Я попытался объявить глобальную переменную, но по какой-то причине она не работает. Я получаю сообщение об ошибке в консоли:
Uncaught TypeError: Cannot read property 'text' of undefined
.
Любые мысли о том, где я ошибся? Благодаря!
КОД
var zipcode;
$.getJSON("http://api.ipinfodb.com/v3/ip-city/?key=my_api_key&format=json&callback=?",
function(data){
zipcode = data['zipCode']; //DE,AT ...
});
$(document).ready(function() {
$.YQL = function(query, callback) {
$.getJSON('http://query.yahooapis.com/v1/public/yql?callback=?', { q: query, format: 'json' }, callback);
};
$.YQL("select * from rss where url='http://weather.yahooapis.com/forecastrss?p=" + zipcode + "'", function (data) {
var w = data.query.results.item,
klass = w.condition.text,
current
encodedclass = klass.replace(/\s+/g, '-').toLowerCase();
$('body').addClass(encodedclass);
});
});
Ваша проблема в том, что вызов для получения zipcode является асинхронным. Сделайте звонок, чтобы получить прогноз погоды от вашего обратного вызова или используйте «.then», чтобы связать свой звонок, чтобы получить погоду в конце вызова, чтобы получить zipcode. –
Предполагается, что текущее должно быть на линии без назначения или запятой? – Skrivener
@Skrivener Смешно, я этого никогда не замечал. Я думал, что это была опечатка в моем посте сначала, но мой фактический код тот же самый путь и функции правильно ... –