我的网站上有一个功能,背景根据天气而变化。如果我声明一个静态邮政编码,我可以成功更改后台,但我希望能够从用户的IP凭据中自动获取邮政编码。
我尝试合并一个脚本来获取邮政编码,效果很好,但我无法弄清楚如何将邮政编码转换为天气功能。我已经尝试声明一个全局变量,但由于某种原因它不起作用。我在控制台中收到错误:
Uncaught TypeError: Cannot read property 'text' of undefined
。
关于我哪里出错的任何想法?谢谢!
CODE
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);
});
});
答案 0 :(得分:0)
试试这个:
var getZip = $.getJSON("http://api.ipinfodb.com/v3/ip-city/?key=my_api_key&format=json&callback=?", function(data){
zipcode = data['zipCode']; //DE,AT ...
});
然后在你的文件中准备好了:
getZip.then(function() {
$.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, // did you miss a comma here?
encodedclass = klass.replace(/\s+/g, '-').toLowerCase();
$('body').addClass(encodedclass);
})
});
以下是使用.then
的文档