2014-09-26 90 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張圖片,間隔爲20s。然而對於只有27張照片的特定標籤。它加載得很好,直到最後20個,儘管我將它限制爲一個,但它們全部加載到一個。它始終是最後20個。Instagram根據主題標籤抓取照片

如何在最後20次加載1次?

回答

0

很難說沒有看到你的PHP腳本,但我可以說的是,你正在迭代一系列返回的照片(使用$ .each)並將返回的照片數組中的每張照片附加到你的DOM。

因此,有一件事是,不要迭代照片陣列,只訪問照片數組的第一個索引(data.images [0])。如果你無法弄清楚爲什麼你的服務器端代碼返回的照片比你想要的要多(你應該調查),只需抓住所有照片並設置一個超時時間,以便在你製作完成後每20秒添加一張返回的照片網絡請求所有這些。這意味着更少的網絡請求,所以也許這將是一個很好的解決方案。

如果您想彌補20個Ajax請求(也許不是最佳解決方案),並且您獲得的圖像比您想要的多,那麼您的PHP需要進行調查,現在您只向我們展示客戶端代碼。