jQuery YQL ВЫБРАТЬ ИЗ переменной rss - PullRequest
1 голос
/ 05 апреля 2011

Итак, у меня есть переменная "woeid", которую я пытаюсь вставить для значения "w" -

$.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> 

1 Ответ

1 голос
/ 09 апреля 2011

Проблема в асинхронном характере поиска данных.

Второй YQL-запрос отправляется сразу после отправки первого. Этот второй запрос следует выполнять только после получения ответа от первого, поскольку именно он предоставляет WOEID для второго запроса.

Короче, переместите второй вызов $.YQL(…) в обратный вызов первого.

Вот пример быстрого рефакторинга, http://jsbin.com/oruhe6

...