2012-12-20 123 views
0

我正在構建一個相當簡單的無限photopage,它從Flickr集合中獲取照片。我有以下代碼:Flickr API JSON拉集

$(window).load(function() { 

var apiKey = 'XXX'; 
var userId = 'XXX'; 
var photoset_id = 'XXX'; 

$.getJSON('http://api.flickr.com/services/rest/?format=json&method=flickr.photosets.getPhotos&photoset_id=' + photoset_id + '&per_page=1000' + '&page=1' + '&api_key=' + apiKey + '&user_id=' + userId + '&jsoncallback=?', function(data) { 
    $.each(data.photoset.photo, function(i, FlickrPhoto){ 
     var basePhotoURL = 'http://farm' + data.photos.FlickrPhoto[i].farm + '.static.flickr.com/' 
     + data.photos.FlickrPhoto[i].server + '/' + data.photos.FlickrPhoto[i].id + '_' + data.photos.FlickrPhoto[i].secret + ".jpg";    

     var a_href = "http://www.flickr.com/photos/" + data.photoset.owner + "/" + FlickrPhoto.id + "/"; 
     $("<img/>").attr("src", basePhotoURL).appendTo("#photographs").wrap(("<div class='item'></div>")) 
    }); 
}); 
}); 

我收到以下錯誤,我似乎無法弄清楚爲什麼。可能是主要失敗,但沒有看到它..

TypeError: data.photos is undefined 
[Break On This Error] 

...asePhotoURL = 'http://farm' + data.photos.FlickrPhoto[i].farm + '.static.flickr.... 
+0

對於其中之一,XXX不是有效的照片集ID,也不是user_id和api_key。我可以理解,不想把你的api放在這裏,但是沒有真正的方法讓我們測試沒有它們的情況下的突破。 – Magicmarkker

+0

真的嗎?我必須放棄我的私鑰才能獲得幫助?奇怪..? –

回答

1

修改您的JQuery $.each。您無需使用i爲每張照片編制索引。該函數針對photo數組中的每個元素執行。因此,flickrPhoto代表data.photoset.photo中的每個項目,因此您不需要在data.photos之前加上它。

$.each(data.photoset.photo, function(i, flickrPhoto){ 
     var basePhotoURL = 'http://farm' + flickrPhoto.farm + '.static.flickr.com/' 
     + flickrPhoto.server + '/' + flickrPhoto.id + '_' + flickrPhoto.secret + ".jpg";    

     var a_href = "http://www.flickr.com/photos/" + data.photoset.owner + "/" + flickrPhoto.id + "/"; 
     $("<img/>").attr("src", basePhotoURL).appendTo("#photographs").wrap(("<div class='item'></div>")) 
}); 
+0

確實很合乎邏輯。當我下班回家時我會試試這個。感謝您的反饋! –

+0

作品!非常感謝你。 –