0
我最近注意到,雅虎已經對他們的天氣服務API進行了更改,並試圖編輯我正在使用的代碼。我發現this code on github,並試圖得到只有今天的天氣信息如此改變limit 5
到limit 1
在變量yql的值,但然後div不會顯示任何東西。只有在我改變大於1的數字(例如2)之後,div才顯示檢索到的數據。我無法弄清楚我做錯了什麼,還有什麼需要去做。雅虎天氣yql數據限制
任何幫助或建議,將不勝感激。
我最近注意到,雅虎已經對他們的天氣服務API進行了更改,並試圖編輯我正在使用的代碼。我發現this code on github,並試圖得到只有今天的天氣信息如此改變limit 5
到limit 1
在變量yql的值,但然後div不會顯示任何東西。只有在我改變大於1的數字(例如2)之後,div才顯示檢索到的數據。我無法弄清楚我做錯了什麼,還有什麼需要去做。雅虎天氣yql數據限制
任何幫助或建議,將不勝感激。
在第27行,代碼將循環期望的結果數組的每個項目。但是,如果響應數據(limit 1
)中只有1個項目,則數據不會是數組,而是一個對象,打破循環。
這裏有一個快速解決方案爲(有一些代碼重複,但它說明了想法):
<html>
\t <head>
\t \t <title>Weather Example</title>
\t \t <script src="https://code.jquery.com/jquery-2.2.3.min.js"
\t \t \t integrity="sha256-a23g1Nt4dtEYOj7bR+vTu7+T8VP13humZFBJNIYoEJo="
\t \t \t crossorigin="anonymous">
\t \t </script>
\t \t <style>
\t \t .weather { display: none; margin: 1em; border: 2px solid black; width: 100px; text-align: center; border-radius: 4px; }
\t \t .weather_date { background-color: #000; color: #fff; height: 1.2em; padding: 0.1em; }
\t \t .weather_temp { display: table; width:100%; height: 1.2em; border-bottom: 1px solid black; }
\t \t .weather_temp_min { display: table-cell; background-color: #efe; width: 50%; padding: 0.1em; }
\t \t .weather_temp_max { display: table-cell; background-color: #fee; width: 50%; padding: 0.1em; }
\t \t .weather_text { font-size: 80%; color: #999; padding: 0.5em; }
\t \t </style>
\t </head>
\t <body>
\t \t <script>
\t \t var url = 'https://query.yahooapis.com/v1/public/yql';
\t \t var yql = 'select title, units.temperature, item.forecast from weather.forecast where woeid in (select woeid from geo.places where text="Brisbane, Australia") and u = "C" limit 1| sort(field="item.forecast.date", descending="false");';
\t \t
\t \t var iconUrl = 'https://s.yimg.com/zz/combo?a/i/us/we/52/';
\t \t
\t \t $.ajax({url: url, data: {format: 'json', q: yql}, method: 'GET', dataType: 'json'})
\t \t \t .success(function(data) {
\t \t \t \t if (data.query.count > 1) {
\t \t \t \t \t jQuery.each(data.query.results.channel, function(idx, result) {
\t \t \t \t \t \t console.log(idx);
\t \t \t \t \t \t var f = result.item.forecast;
\t \t \t \t \t \t var u = result.units.temperature;
\t \t \t \t \t \t
\t \t \t \t \t \t var c = $('#weather').clone();
\t \t \t \t \t \t c.find('.weather_date').text(f.date);
\t \t \t \t \t \t c.find('.weather_temp_min').text(f.low + u);
\t \t \t \t \t \t c.find('.weather_temp_max').text(f.high + u);
\t \t \t \t \t \t c.find('.weather_icon').attr('src', iconUrl + f.code + '.gif');
\t \t \t \t \t \t c.find('.weather_text').text(f.text);
\t \t \t \t \t \t
\t \t \t \t \t \t c.css('display', 'inline-block');
\t \t \t \t \t \t
\t \t \t \t \t \t c.appendTo($('body'));
\t \t \t \t \t });
\t \t \t \t } else {
var f = data.query.results.channel.item.forecast;
var u = data.query.results.channel.units.temperature;
var c = $('#weather').clone();
c.find('.weather_date').text(f.date);
c.find('.weather_temp_min').text(f.low + u);
c.find('.weather_temp_max').text(f.high + u);
c.find('.weather_icon').attr('src', iconUrl + f.code + '.gif');
c.find('.weather_text').text(f.text);
c.css('display', 'inline-block');
c.appendTo($('body'));
}
\t \t \t }
\t \t);
\t \t </script>
\t \t
\t \t <!-- Used as a template -->
\t \t <div id="weather" class="weather">
\t \t \t <div class="weather_date">DATE</div>
\t \t \t <div class="weather_temp">
\t \t \t \t <div class="weather_temp_min">MIN</div>
\t \t \t \t <div class="weather_temp_max">MAX</div>
\t \t \t </div>
\t \t \t <img class="weather_icon">
\t \t \t <div class="weather_text"></div>
\t \t </div>
\t \t
\t </body>
</html>