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

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

我尝试从 Yahoo YQL 获取天气数据。该请求有效,但它停止工作...

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;
}

结果是:

Uncaught TypeError: Cannot read property 'results' of undefined

怎么了?

谢谢

使用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>

您可以将 $.getJSON() 与 URL

一起使用
"https://query.yahooapis.com/v1/public/yql?q=select * from weather.forecast where woeid='45‌​5827' and u='c'&format=json&diagnostics=true&callback="

"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D'45%E2%80%8C%E2%80%8B5827'%20and%20u%3D'c'&format=json&diagnostics=true&callback="

$.getJSON("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D'45%E2%80%8C%E2%80%8B5827'%20and%20u%3D'c'&format=json&diagnostics=true&callback=")
  .then(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;
    console.log(resultados, graus, cod_condicao
                , nascer, poente, umidade, vento, forecast);
  })
  .fail(function(jqxhr, textStatus, errorThrown) {
     console.log(errorThrown)
  })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>