2016-12-18 2 views
0

Ich muss die folgende Abfrage wiederholen, um die Ergebnisse von Google Bilder zu erhöhen. Der Code wird nach einem Klick auf eine Schaltfläche ausgeführt.Wie wiederhole ich eine Abfrage?

Google docs sagt:

Google Custom Search und Google Site Search bis 10 Ergebnisse zurück bis pro Abfrage. Wenn Sie dem Benutzer mehr als 10 Ergebnisse anzeigen möchten, können Sie mehrere Anfragen (mit den Parametern start = 0, start = 11 ... ) absetzen und die Ergebnisse auf einer einzigen Seite anzeigen. In diesem Fall wird Google jede Anfrage als separate Anfrage betrachten. Wenn Sie mit Google Site Search verwenden, wird jede Anfrage auf Ihr Limit angerechnet.

Other SO question says

Um mehr Ergebnis erhalten Sie mehrere Anrufe tätigen sollte. in jedem unterschiedlichen Anruf, erhöhen Sie den Wert des Parameters ‚Start‘ von 10.

Und auch this one says:

Jetzt können Sie Google zu einem Zeitpunkt mehr als 10 Ergebnisse nicht fragen. Sie müssen also erneut abfragen, um 10 Ergebnisse ab 11 anzufragen. Also In nächste Abfrage, Num = 10 und Start = 11. Jetzt können Sie alle Ergebnisse durch ändern Startwert.

Wie kann ich das Folgende wiederholen und den Parameter start jedes Mal erhöhen?

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'); 
     }); 
     }); 
    } 

Antwort

1

Sie sollten start Wert zwischen Anrufe speichern, um beispiels Sie Muster wie diese verwenden:

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. 
Verwandte Themen