0

Flickr セットから写真を取得する、かなり単純な無制限の写真ページを作成しています。次のコードがあります。

$(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....
4

1 に答える 1

1

JQuery を変更します$.eachi各写真の索引付けに を使用する必要はありません。この関数は、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>"))
});
于 2012-12-20T23:17:51.660 に答える