在jQuery getJSON之后获取数据

在jQuery getJSON之后获取数据,jquery,ajax,facebook,json,facebook-graph-api,Jquery,Ajax,Facebook,Json,Facebook Graph Api,我正在尝试通过facebook Graph API获取照片。这是我的密码: function getImgURL(photos, m) { n=0; while (typeof photos[n] !== 'undefined') { photourl[m] = photos[n].images[2].source; n++; m++; } } $('document').ready(function() { var url = "https://gra

我正在尝试通过facebook Graph API获取照片。这是我的密码:

function getImgURL(photos, m) {
  n=0;
  while (typeof photos[n] !== 'undefined') {
    photourl[m] = photos[n].images[2].source;
    n++;
    m++;
  }
}

$('document').ready(function() {
  var url = "https://graph.facebook.com/179877662120200";
  var json = $.ajax(url);
  console.log(json);
  console.log(json.responseText);
  var photos = $.parseJSON(json);
  console.log(photos);
  console.log(photos);
  var m = 0;
  getImgURL(photos, m);
  while (typeof photos.paging !== 'undefined') {
    json = $.ajax(photos.paging.next);
    photos = $.parseJSON(json);
    getImgURL (photos, m);
  }
});
因此,查看日志,它将变量json作为对象返回。对象的一个属性是“responseText”,但当我试图将其打印到控制台时,它返回“undefined”

AJAX/JSON-p请求是(通常-对于JSON-p总是)异步操作-您需要在回调中接收和处理响应,而不是直接在请求之后

您认为得到的对象实际上是jQuery生成的延迟对象,而不是响应

因此:

或者,如果您希望以后出于任何原因声明回调:

var req = $.getJSON(url);
//other, synchronous code here
req.done(function(response) { console.log(response); });
其他几点:

1) jQuery自动解析作为JSON-p请求的一部分返回的JSON字符串,因此您不需要像现在这样自己解析它

2) 您的
n
var(似乎)是全局的

3) 您可能希望改进缩进,因为代码不是超级可读的

4) 您的循环可以简化为
,而(photos[n]){…

AJAX/JSON-p请求是(通常-在JSON-p的情况下总是)异步操作-您需要在回调中接收和处理响应,而不是直接在请求之后

var json = $.ajax({
    'url': "https://graph.facebook.com/179877662120200",
    'success': function(json) {
        console.log(json);
        console.log(json.responseText);
    }
});
您认为得到的对象实际上是jQuery生成的延迟对象,而不是响应

因此:

或者,如果您希望以后出于任何原因声明回调:

var req = $.getJSON(url);
//other, synchronous code here
req.done(function(response) { console.log(response); });
其他几点:

1) jQuery自动解析作为JSON-p请求的一部分返回的JSON字符串,因此您不需要像现在这样自己解析它

2) 您的
n
var(似乎)是全局的

3) 您可能希望改进缩进,因为代码不是超级可读的


4) 您的循环可以简化为
while(照片[n]){…

谢谢你的帮助。我会在它运行后再次发布。没有问题。如果我或任何其他回答者提供了帮助,请接受回答或投票。在我使用你的回答后,我遇到了一些问题,因为控制台没有输出任何东西。我意识到我只是没有等待足够长的时间来获得响应。我需要习惯整个异步业务:PNo probs。了解jQuery延迟和AJAX总的来说是值得的。谢谢你的帮助。我会在它运行后再次发布。没有问题。如果我或任何其他回答者提供了帮助,请接受回答或投票。在我使用你的回答后,我遇到了一些问题,因为控制台没有输出任何内容。我意识到我只是没有等待足够长的时间来响应。我需要适应整个异步业务:PNo probs。值得阅读jQuery延迟和AJAX。
var json = $.ajax({
    'url': "https://graph.facebook.com/179877662120200",
    'success': function(json) {
        console.log(json);
        console.log(json.responseText);
    }
});