我正在使用Yahoo Weather API。
这是我的代码:
<script>
var callbackFunction = function (data) {
console.log(data);
var location = data.query.results.channel.location;
var condition = data.query.results.channel.item.condition;
var wind = data.query.results.channel.wind;
var units = data.query.results.channel.units;
document.getElementById('Weather-Info').innerHTML = 'The weather for ' + location.city + ', ' + location.region + ' is ' + condition.temp + units.temperature + ' with a wind speed of ' + wind.speed;
}
callbackFunction()
<script src="https://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20weather.forecast%20WHERE%20woeid%3D%222409681%22%20and%20u%3D%22f%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=callbackFunction"></script>
每次进入页面时,我都会收到以下弹出窗口:
无法获取未定义或空引用的属性“查询”
但是,如果我点击No,数据仍然填充..如果它告诉我属性未定义,它如何填充数据? YQL Weather API非常复杂。
答案 0 :(得分:2)
为什么要自己调用回调函数?在任何情况下,在没有参数的情况下调用它意味着data
将是未定义的,这就是您收到错误的原因。
我对雅虎一无所知!天气API,但这似乎是JSONP
的事情,所以尝试删除这部分:
callbackFunction()
因为一旦脚本加载就会自动调用它。