我正在尝试通过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”
答案 0 :(得分:3)
AJAX / JSON-P请求(通常是 - 总是在JSON-P的情况下)异步操作 - 您需要在回调中接收和处理响应,而不是在请求之后直接处理。
您认为正在获取的对象实际上是由jQuery生成的延迟对象,而不是响应。
所以:
$.getJSON(url).done(function(response) {
console.log(response); //here's your response
});
或者,如果您之后因任何原因而声明回调:
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(photos[n]) {...
答案 1 :(得分:2)
var json = $.ajax({
'url': "https://graph.facebook.com/179877662120200",
'success': function(json) {
console.log(json);
console.log(json.responseText);
}
});