在jQuery getJSON之后获取数据
我正在尝试通过facebook Graph API获取照片。这是我的密码:在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
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);
}
});