2016-12-18 65 views
0

我需要重複以下查詢以增加google圖像的結果。代碼在點擊一個按鈕後執行。如何重複查詢?

谷歌文檔說:

谷歌自定義搜索和谷歌網站搜索最多返回10個結果 每次查詢。如果要向用戶顯示超過10個結果,可以發出多個請求(使用start = 0,start = 11 ... 參數),並將結果顯示在單個頁面上。在這種情況下,Google會將每個請求視爲單獨的查詢,如果您是使用Google Site Search的 ,則每個查詢都會計入您的限制。

Other SO question says

爲了獲得更多的結果,你應該讓多個呼叫。在每個不同的 呼叫,通過10

而且還this one says增加參數「開始」的價值:

現在你不能要求谷歌超過10個結果的時間。所以你 必須再次查詢要求從11開始的10個結果。因此在下一個 查詢,保持num = 10和開始= 11。現在您可以通過 更改開始值來獲取所有結果。

如何每次重複以下操作並增加start參數?

function googleImages() { 
     var myCx = "MY_CX"; 
     var myKey = "MY_KEY"; 
     $.getJSON("https://www.googleapis.com/customsearch/v1", { 
      q: termS + " in 1930 in " + country, 
      alt: "json", 
      searchType: "image", 
      cx: myCx, 
      num: 10, 
      start: 0, 
      key: myKey, 
      rights: "cc_publicdomain", 
      filter: "1", 
      safe: "high", 
      imgType: "photo", 
      fileType: "jpg" 
     }, 
     function (data) { 
      $.each(data.items, function(i,item) {  
       $(".my_images .row .grid").append('<div class="col-sm-4 grid-item"><div class="thumbnail"><img class="img-responsive" src="' + item.link + '"></div></div>'); 
      }); 
      var $grid = $('.grid').packery({ 
      // options 
      itemSelector: '.grid-item', 
      percentPosition: true 
     }); 
     $grid.imagesLoaded().progress(function() { 
      $grid.packery('layout'); 
     }); 
     }); 
    } 

回答

1

你應該節省話費之間start值,從而例如,你可以使用模式是這樣的:

function createGoogleImagesLoader(initialValue) { 
     var _start = initialValue || 0; 
     var imagesCount = 10; 

     return function() { 
      $.getJSON("https://www.googleapis.com/customsearch/v1", { 
       ... 
       num: imagesCount, 
       start: _start 
      },..); 
      _start += imagesCount; 

     } 
    } 

var googleImages = createGoogleImagesLoader(); 
googleImages() // load from 0 to 10 
googleImages() // load from 10 to 20 etc.