Pedro Antônio Pedro Antônio - 1 month ago 18
jQuery Question

Uncaught TypeError: Cannot read property 'results' of undefined - YQL

I try to get weather data from Yahoo YQL. The request worked, but it stop to work...

var yql = encodeURIComponent('select * from weather.forecast where woeid = "' + woeid + '"and u="c"');
$$.ajax({
//dataType: "json",
// contentType: 'application/json; charset=utf-8',
dataType: 'text',
url: 'https://query.yahooapis.com/v1/public/yql?q=' + yql + '&format=json',
timeout: 5000,

//Sucesso
success: function(data){
var resultados = data.query.results.channel;

var graus = resultados.item.condition.temp;
var cod_condicao = resultados.item.condition.code;
var nascer = resultados.astronomy.sunrise;
var poente = resultados.astronomy.sunset;
var umidade = resultados.atmosphere.humidity + '%';
var vento = resultados.wind.speed + 'KM/H'
var forecast = resultados.item.forecast;
}


The result is:


Uncaught TypeError: Cannot read property 'results' of undefined


What is wrong?

Thanks

Answer

Use dataType:'json'.

var woeid = 455827; // example id
var yql = encodeURIComponent('select * from weather.forecast where woeid = "' + woeid + '"and u="c"');
$.ajax({
  dataType: 'json',
  url: 'https://query.yahooapis.com/v1/public/yql?q=' + yql + '&format=json',
  timeout: 5000,
  //Sucesso
  success: function(data) {
    console.log(data);
    var resultados = data.query.results.channel;

    var graus = resultados.item.condition.temp;
    var cod_condicao = resultados.item.condition.code;
    var nascer = resultados.astronomy.sunrise;
    var poente = resultados.astronomy.sunset;
    var umidade = resultados.atmosphere.humidity + '%';
    var vento = resultados.wind.speed + 'KM/H'
    var forecast = resultados.item.forecast;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Comments