从instagram标签请求图片不会返回所有图片

时间:2015-12-03 09:40:02

标签: javascript instagram

我有一些项目,每个项目都有一些标签,我正在尝试为每个标签做一个Instagram请求,并显示与所有标签相关的图片。

它似乎有效,但我只能看到第二个标签的图片(如果该项目有多个标签)。

我很确定问题就在于:

target.empty();

没有放在正确的地方,但我试图改变它的位置,我没有照片,所有物品的所有照片等...

https://jsfiddle.net/re7vkbwq/37/

每次显示项目信息时都会执行instagram请求,所有项目共享相同的模式,以使用角度和ng重复显示其信息。

我用正确的json请求更新了小提琴,在此之前它是错误的广告我写了一个数组。

我尝试将target.empty()调用到最开始,但它最后返回一个空目标。它应该工作,我不明白为什么不这样工作:

instagramTags = function(tags){
  target.empty();
  tags.forEach(function(tag) {
    grabImages(tag.name, 3, access_parameters);
  });
};

我试图把它放在forEach之后,即使它似乎没有意义,它会返回其中一个标签的一些图像:

instagramTags = function(tags){
      tags.forEach(function(tag) {
        grabImages(tag.name, 3, access_parameters);
      });
    target.empty();
    };

1 个答案:

答案 0 :(得分:1)

如果你在控制台中查看net,在你的小提琴中,你会看到Instagram API请求中没有定义标签。这似乎有效:

以下代码已更新,以反映更正的问题和OP的评论。

         var access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
access_parameters = {
    access_token: access_token
};

instagramTags = function(tags){
  $('.pictures').empty();
  tags.forEach(function(tag) {
    grabImages(tag.name, 3, access_parameters);
  });
};

function grabImages(tag, count, access_parameters) {
  var instagramUrl = 'https://api.instagram.com/v1/tags/' + tag + '/media/recent?callback=?&count=' + count;
  $.getJSON(instagramUrl, access_parameters, onDataLoaded);
}

function onDataLoaded(instagram_data) {
  var target = $(".pictures");
  //console.log(instagram_data);
  if (instagram_data.meta.code == 200) {
      var photos = instagram_data.data;
      //console.log(photos);
      if (photos.length > 0) {
          //target.empty();
          for (var key in photos) {
              var photo = photos[key];
              target.append('<a href="' + photo.link + '"><img class="thumbnail" src="' + photo.images.thumbnail.url + '"></a>')
          }
      } else {
          target.html("nothing found");
      }
  } else {
      var error = instagram_data.meta.error_message;
      target.html(error);
  }
}

instagramTags([
  {
    name: "ruby"
  },
  {
    name: "cry"
  },
  {
    name: "fun"
  }
]);

FIDDLE