2012-02-22 5 views
2

Есть ли способ получить прогноз погоды от woeid в javascript?Прогноз погоды от WOEID (используя YQL или rss) в javascript?

Я пробовал использовать rss-канал yahoo, но не смог заставить его работать. вот мой код

var url = "http://weather.yahooapis.com/forecastrss?w=" + encodeURIComponent('WOEID here'); 

    $.ajax({ 
     url: url, 
     dataType: 'jsonp', 
     jsonpCallback: function(data) { console.log(data); }, 
     success: function(data) { alert("success"); } 
    }); 

Любые предложения?

ответ

2

Вот самый простой способ, чтобы получить информацию, которую Вы хотите с помощью JQuery и YQL:

var woeid = "26355493"; 

var $url = "http://query.yahooapis.com/v1/public/yql?callback=?"; 

$.getJSON($url, { 
    q: "select * from xml where url=" + 
     "\"http://weather.yahooapis.com/forecastrss?w=" + woeid + "\"", 
    format: "json" 
    }, function (data) { 
    console.log(data.query.results.rss.channel); 
    } 
);​ 

The query in the YQL console...

The JavaScript code in jsfiddle...

+0

Это не возвращает полную информацию о погоде. Как вы можете получить влажность, атмосферные данные и т. Д.? – Sujit

+0

OK Я обновил код для вывода всех данных на консоль отладки для вас. Также обновляются ссылки YQL и jsfiddle. Выполняя эти изменения, я обнаружил, что 'select * from rss' фактически возвращает только подмножество данных по сравнению с' select * from xml', поэтому я тоже изменил это. – hippietrail

+1

Спасибо, что работает. Ваше решение лучше, чем мое ... :) – Sujit

1

По-видимому, API погоды возвращает свои результаты в формате RSS, в то время как ваша функция ожидает их в формате jsonp. Рассмотрите возможность использования Yahoo! Pipes, чтобы получить прогноз погоды RSS, обработать его и вернуть его в формате jsonp.

Вот труба, которая делает что-то подобное:

http://pipes.yahoo.com/pipes/pipe.info?_id=4d160cd8ed9d6d78164213928a51507d

+0

JSON: http://weather.yahooapis.com/forecastjson?w=2502265 –

0

Как дракон предложил, я создал Yahoo Pipe - вот мой полный код; url в коде - это созданный мной Yahoo Pipe.

$(function(){ 
    var url = "http://pipes.yahoo.com/pipes/pipe.run?_id=e33143abd20b19a0173b3a4b479fa4d3&_render=json&w=YOURWOEIDHERE"; 

    function createRequest() { 
     try { return new XMLHttpRequest(); } catch(e) {} 
     try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} 
     return null; 
    } 
    var request = createRequest(); 
    request.open("GET", url, true); 
    request.onreadystatechange = callback; 
    request.send(null); 

    function callback() { 
     if(request.readyState != 4) { return } 
     Obj = $.parseJSON(request.responseText); 
     console.log(Obj); 
    } 
}); 

ссылки:
Yahoo Трубные: http://pipes.yahoo.com/pipes/pipe.info?_id=e33143abd20b19a0173b3a4b479fa4d3
jQuery 1.5 - JSON error invalid label