2014-09-26 2 views
2
setInterval(function() {  
    $("ul").empty(); 
    var tag = $("#add").data('tag'), maxid = $("#add").data('maxid'); 

    $.ajax({ 
     type: 'GET', 
     url: 'ajax.php', 
     data: { 
      tag: tag, 
      max_id: maxid 
     }, 
     dataType: 'json', 
     cache: false, 
     success: function(data) { 
      // Output data 
      $.each(data.images, function(i, src) { 
       $('ul#photos').append('<li><img src="' + src + '"></li>'); 
      }); 

      // Store new maxid 
      $('#add').data('maxid', data.next_id); 
     } 
    }); 
}, 20000); 

Я пытаюсь загрузить 1 изображение за раз в интервале 20 с. Однако для определенного хэштега всего 27 фотографий. Он загружается до последних 20, который загружает все на одном, хотя я ограничиваю его только одним. Это всегда последние 20.Instagram grabbing photos on hashtag

Как загрузить его 1 за один раз за последние 20?

ответ

0

Трудно сказать точно, не глядя на ваш PHP-скрипт, но я могу сказать, что вы повторяете массив возвращаемых фотографий (используя $ .each) и добавляете каждую фотографию из массива возвращенных фотографий на ваш DOM.

Итак, одно дело - не перебирать массив фотографий и просто получать доступ к первому указателю массива фотографий (data.images [0]). Если вы не можете понять, почему ваш код на стороне сервера возвращает больше фотографий, чем вы хотите (что вы должны исследовать), просто возьмите все фотографии и установите тайм-аут, который добавляет одну из возвращенных фотографий каждые 20 секунд после того, как вы сделали сетевой запрос для всех из них. Это будет означать меньше сетевых запросов, так что, возможно, это будет хорошим решением для вас.

Если вы хотите сделать до 20 запросов ajax (возможно, не оптимальное решение), и вы получаете больше обратных изображений, чем хотите, тогда ваш PHP нужно исследовать, и прямо сейчас вы показываете нам только клиентский код.

Смежные вопросы