无法获取未定义或空引用的属性“查询”

时间:2016-06-08 19:03:34

标签: javascript api

我正在使用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非常复杂。

1 个答案:

答案 0 :(得分:2)

为什么要自己调用回调函数?在任何情况下,在没有参数的情况下调用它意味着data将是未定义的,这就是您收到错误的原因。

我对雅虎一无所知!天气API,但这似乎是JSONP的事情,所以尝试删除这部分:

callbackFunction()

因为一旦脚本加载就会自动调用它。