2011-04-05 54 views
1

所以我有一個變量「WOEID」是我正在試圖把在爲「W」的價值 -jQuery的YQL選擇RSS可變

$.YQL("select * from rss where url='http://weather.yahooapis.com/forecastrss?w="+woeid"'",function(data){ 

爲什麼不工作?

編輯:整個劇本 -

<script> 
      $(document).ready(function() { 

      $.YQL = function(query, callback) { 
       var encodedQuery = encodeURIComponent(query.toLowerCase()), 
        url = 'http://query.yahooapis.com/v1/public/yql?q=' 
         + encodedQuery + '&format=json&callback=?'; 
       $.getJSON(url, callback); 
      }; 

      $.YQL("select place.woeid from flickr.places where lat=34.45 and lon=-118.54", function(data) { 
         var w=data.query.results.places.place; 
         woeid = w.woeid 


      }); 

      $.YQL("select * from rss where url='http://weather.yahooapis.com/forecastrss?w=" + woeid,function(data){ 
         var w=data.query.results.item; 
         var class=w.condition.text; 
         var encodedclass = class.replace(/\s+/g, '-').toLowerCase(); 

         $('body').addClass(encodedclass); 
         $('#weatherTemp').html(w.condition.temp+"&deg;"); 
         $('#weatherText').html(w.condition.text+""); 
         $('#geolat').html(w.title+""); 

         $('#var').html(lat+"latitude"); 

        }); 

      }); 
     </script> 
+0

什麼不行?你會得到什麼錯誤? – 2011-04-05 16:00:07

回答

1

問題是與您的數據檢索的異步特性。

第二個YQL查詢在發送第一個YQL查詢後立即發送出。第二個查詢只能在收到第一個查詢的響應後才能進行,因爲這是爲第二個查詢提供WOEID的查詢。

總之,將第二個$.YQL(…)調用到第一個回調中。

這是一個快速重構的例子,http://jsbin.com/oruhe6