【问题标题】:Using jQuery $.getJSON() with Google Picasa Data API将 jQuery $.getJSON() 与 Google Picasa 数据 API 一起使用
【发布时间】:2011-09-08 18:46:41
【问题描述】:

这是我第一次尝试使用 Google 数据 API,我使用 jQuery 的 $.getJSON() 函数得到了意想不到的结果。这是我的代码:

$(document).ready(function(){
        var json_Album_URI = "https://picasaweb.google.com/data/feed/base/"
            + "user/"       +   "thewoodsmyth"
            + "?alt="       +   "json"
            + "&kind="      +   "album"
            + "&hl="        +   "en_US"
            + "&fields="    +   "entry(media:group,id)"
            + "&thumbsize=" +   104;

    $.getJSON(json_Album_URI,
    function(data){
        $.each(data.feed.entry, function(i,item){
            //Thumbnail URL
            $.each(item.media$group.media$thumbnail, function(i,item){
                var album_thumb_URL = item.url;
                $('#images').append("Album Thumbnail: " + album_thumb_URL + '<br />');
            });
            //Album Title
            var album_Title = item.media$group.media$title.$t;
            $('#images').append("Album Title: " + album_Title + '<br />');
            //Album Description
            var album_Description = item.media$group.media$description.$t;
            $('#images').append("Album Description: " + album_Description + '<br />');
            //Album ID
            var album_ID = item.id.$t;
                //Get Numerical ID from URL
            album_ID = album_ID.split('/')[9].split('?')[0];
            $('#images').append("AlbumID: " + album_ID + '<br /><br />');

    var json_Photo_URI = "https://picasaweb.google.com/data/feed/base/"
        + "user/"       +   "thewoodsmyth"
        + "/albumid/"   +   album_ID
        + "?alt="       +   "json"
        + "&kind="      +   "photo"
        + "&hl="        +   "en_US"
        + "&fields="    +   "entry(media:group)"
        + "&thumbsize=" +   104;

    $.getJSON(json_Photo_URI,
    function(data){
        $.each(data.feed.entry, function(i,item){
            $('#images').append("Album Photos: <br />");
            //Photo URL
            $.each(item.media$group.media$content, function(i,item){
                var photo_URL = item.url;
                $('#images').append("Image Photo URL: " + photo_URL + '<br />');
            });
            //Thumbnail URL
            $.each(item.media$group.media$thumbnail, function(i,item){
                var photo_Thumb_URL = item.url;
                $('#images').append("Image Thumbnail URL: " + photo_Thumb_URL + '<br />');
            });
            //Photo Title
            var photo_Title = item.media$group.media$title.$t;
            $('#images').append("Image Photo_Title: " + photo_Title + '<br />');
            //Photo Description
            var photo_Description = item.media$group.media$description.$t;
            $('#images').append("Image Photo Description: " + photo_Description + '<br /><br />');
        });
    });
        });
    });
});

我原以为单张“专辑”信息后面会跟着一张专辑的所有“照片”信息。相反,它最终会吐出所有四个相册信息的列表,然后是所有照片信息的列表。

我的预期:

album_1 info
     album_1 photo_1
     album_1 photo_2
     album_1 photo_3
/album_1 info
album_2 info
     album_2 photo_1
     album_2 photo_2
     album_2 photo_3
/album_2 info
...etc

我得到了什么:

album_1 info
album_2 info
album_3 info
...etc
     album_1 photo_1
     album_1 photo_2
     album_1 photo_3
     album_2 photo_1
     album_2 photo_2
     album_2 photo_3
     album_3 photo_1
     album_3 photo_2
     album_3 photo_3
...etc

我错过了什么?

【问题讨论】:

    标签: jquery getjson google-data-api json


    【解决方案1】:

    这里的问题是,第二个 getJSON 不能是异步的!因为你要在相册里面添加照片而已!因此,要使其正常工作,只需将第二次调用 'getJSON' 更改为 '$.ajax' 并将其设置为 async: false。

    代码如下:

    $.ajax({
        type: 'GET',
        url: json_Photo_URI,
        success : function(data){
            $.each(data.feed.entry, function(i,item){
                $('#images').append("Album Photos: <br />");
                //Photo URL
                $.each(item.media$group.media$content, function(i,item){
                    var photo_URL = item.url;
                    $('#images').append("Image Photo URL: " + photo_URL + '<br />');
                });
                //Thumbnail URL
                $.each(item.media$group.media$thumbnail, function(i,item){
                    var photo_Thumb_URL = item.url;
                    $('#images').append("Image Thumbnail URL: " + photo_Thumb_URL + '<br />');
                });
                //Photo Title
                var photo_Title = item.media$group.media$title.$t;
                $('#images').append("Image Photo_Title: " + photo_Title + '<br />');
                //Photo Description
                var photo_Description = item.media$group.media$description.$t;
                $('#images').append("Image Photo Description: " + photo_Description + '<br /><br />');
            });
        },
        dataType: 'json',
        async: false
    
    });
    

    我还发布了完整的 HTML 文件: https://gist.github.com/1204385

    【讨论】:

    • 哈哈谢谢亚瑟。我想这就是我使用快捷方式所得到的。很好的答案。
    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多