【问题标题】:Tumblr API get last 50 photo posts in large sizes not quite workingTumblr API 获取最后 50 个大尺寸照片帖子
【发布时间】:2014-07-02 07:30:57
【问题描述】:

我有一些非常接近我需要的东西,但我一定缺少一些东西。

这是我的代码:

$.ajax({
   url: "http://api.tumblr.com/v2/blog{my-blog}/posts?limit=50",
   dataType: 'jsonp',
   data: {
       api_key: "{my key}"
   },
success: function(results){
    console.log(results);
    var i = 0;

    while (i < 50) {

        var type = results.response.posts[i].type;
        console.log(results.response.posts.length);

            if (type == "photo") {
                var getImages = results.response.posts[i].photos[i].alt_sizes[0].url;
                $("#tumblr-posts").append("<div class='postbody'>" + "<img src=" + getImages + " /></div>");
            }
        i++;
    }   
}
});

这是从我的博客返回第一张大尺寸图片,但我在控制台中也收到错误:无法读取未定义的属性“alt_sizes”。我尝试了一些变体,但我的逻辑是循环应该返回所有帖子 .posts[i]、所有照片 .photos[i],然后是 alt_sizes[0] 数组中的第一个图像,它应该是大图像。

控制台显示正在返回 50 个对象,因此对 API 的调用正常。

非常感谢任何帮助。

【问题讨论】:

    标签: jquery ajax api jsonp tumblr


    【解决方案1】:

    您正在使用计数器i 选择posts 和photos 的具体属性,这就是它返回undefined 的原因,例如:

    i = 1;
    var getImages = results.response.posts[1].photos[1].alt_sizes[0].url;
    

    posts[1] 是回复中的第二个帖子,但photos[1] 指的是posts[1] 的第二张照片,并且可能不存在作为单个照片帖子。

    您需要创建另一个循环来检查每个帖子中是否有超过一张照片,照片集最多有十张照片。

    var i = 0;
    
    while (i < 50) {
    
      var type = results.response.posts[i].type;
    
      if (type == "photo") {
    
        var photos = results.response.posts[i].photos;
    
        for (var j = 0; j < photos.length; j++) {
          console.log( photos[j].alt_sizes[0].url );
        }
    
      }
    
      i++;
    
    }   
    

    还值得一提的是,在旧图像上,如果没有可用的高分辨率版本,它不会回退到另一个 URL,它留空,因此您可能还需要检查。

    【讨论】:

    • 非常感谢,让它工作了(我希望你能读到这篇文章)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多