2011-11-22 19 views
7

Korzystamy z niestandardowego API wyszukiwania google (płatnego interfejsu API po stronie serwera), aby zasilać nasze wyniki wyszukiwania.Funkcja autouzupełniania interfejsu API wyszukiwarki niestandardowej Google?

Chciałbym dodać funkcję autouzupełniania do wyszukiwania - jednak nie każdy wie, jeśli nie ma wsparcia dla tego (? Albo za pośrednictwem interfejsu API po stronie serwera, lub za pośrednictwem jakiejś stronie klienta jsonp)

Próbowałem użyć funkcji autouzupełniania do wyszukiwania niestandardowego Google, ale wydaje się, że chcesz narysować pole wyszukiwania i wyświetlić reklamy Google z wynikami, których nie chcę.

Odpowiedz

13

Got to coś działa tak - mam nadzieję, że to pomoże ktoś inny :)

$(function() { 
    $('input.search') 
    .focus(function() { this.select(); }) 
    .mouseup(function (e) { e.preventDefault(); }) 
    .autocomplete({ 
     position: { 
     my: "left top", 
     at: "left bottom", 
     offset: "0, 5", 
     collision: "none" 
     }, 
     source: function (request, response) { 
     $.ajax({ 
      url: "http://clients1.google.com/complete/search?q=" + request.term + "&hl=en&client=partner&source=gcsc&partnerid={GOOGLESEARCHID}&ds=cse&nocache=" + Math.random().toString(), 
      dataType: "jsonp", 
      success: function (data) { 
      response($.map(data[1], function (item) { 
       return { 
       label: item[0], 
       value: item[0] 
       }; 
      })); 
      } 
     }); 
     }, 
     autoFill: true, 
     minChars: 0, 
     select: function (event, ui) { 
     $(this).closest('input').val(ui.item.value); 
     $(this).closest('form').trigger('submit'); 
     } 
    }); 
}); 
+0

Dzięki za ten kod, mam jeden problem z tym, którego nie rozumiem. Widzę, że żądanie sieciowe zgasło poprawnie i widzę na nie 200 odpowiedzi, z oczekiwanymi danymi odpowiedzi, ale z jakiegoś powodu funkcja sukcesu nigdy nie jest trafiona. Jakieś pomysły? – Paul

+0

Awesome, pracował dla mnie. Paul, jeśli nie widzisz żadnych sugestii, może być tak, że Google po prostu nie ma dla ciebie żadnych. Byłem bardzo zaskoczony tym, jak mało sugestii ma do zaoferowania moje niestandardowe wyszukiwanie w witrynie; Skończyło się na dodaniu ogromnej ilości ręcznie w panelu sterowania CSE. – jfsaliba

+0

Świetnie, dzięki za to działa również dla mnie. Jedynym moim problemem jest rozpiętość '.ui-helper-hidden-accessible', która pojawia się tuż przed zamykającym tagiem body. Czy jest to coś, co można wyłączyć, a nie ukrywać go za pomocą css? – onebitrocket

1

W czasie pisania (czerwiec 2013), jest nieco łatwiejszy sposób na uzyskanie autouzupełnianie, a jednocześnie coraz wyniki jako XML:

<gcse:searchbox-only enableAutoComplete="true" resultsUrl="#"></gcse:searchbox-only>

  • z „Trick” jest to, że można określić „resultsUrl”, co oznacza, że ​​można kierować rzeczywiste wyniki wyszukiwania do strony wygenerować za pośrednictwem interfejsu API XML, bez konieczności wdrażania wyszukiwanie Box UX samodzielnie.
Powiązane problemy