JSON ajax返回undefined

时间:2015-11-11 18:26:46

标签: javascript jquery json ajax

因此,我已经通过搜索引擎优化和互联网查看了一些指示灯,但却无法找到任何能击中头部钉子的东西。

我试图从函数中返回一个值。以下内容将在警报中显示数据,因此我知道正确的值是从JSON调用返回的:

function getTitle(){
      var q= 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'

$.ajax({
      url: q, 
      dataType: "text",
      success: function(data){
          data = JSON.parse(data);
          alert(data.items[0].snippet.title);
      }
  });
}
getTitle();

但是当我尝试从函数中返回数据时:

function getTitle(){
     var q= 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'

$.ajax({
      url: q, 
      dataType: "text",
      success: function(data){
          data = JSON.parse(data);
          return data.items[0].snippet.title;
      }
  });
}
alert(getTitle());

我得到 undefined

如果有人能告诉我自己是个傻瓜,我会很感激。

2 个答案:

答案 0 :(得分:5)

函数$.ajax是异步的。函数getTitle将立即返回为undefined。如果您想对数据执行某些操作,请将该代码放在success函数中:

function getTitle(){
     var q= 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'

    $.ajax({
        url: q, 
        dataType: "text",
        success: function(data){
            data = JSON.parse(data);
            setTitle(data.items[0].snippet.title);
        }
    });
}
function setTitle(title){
    //do something
}

答案 1 :(得分:0)

$.ajax是异步的,使用回调函数来获取数据。



function getTitle() {
  var q = 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'

  $.ajax({
    url: q,
    dataType: "text",
    success: function(data) {
      data = JSON.parse(data);
      success(data);
    }
  });
}

function success(data) {
  alert(data.items[0].snippet.title);
}