2011-11-22 191 views
7

我們使用谷歌自定義搜索API(付費服務器端API)爲我們的搜索結果提供支持。Google Custom Search API自動完成?

我想添加一個自動完成功能的搜索 - 然而,有沒有人知道是否有支持(無論是通過服務器端API,還是通過某種客戶端JSONP?)

我曾嘗試使用Google自定義搜索的自動完成功能,但似乎想要繪製搜索框並顯示帶有結果的Google廣告,而我不想。

回答

13

得到這個工作是這樣的 - 希望這可以幫助別人:)

$(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

感謝這段代碼,我遇到了一個問題,我不明白。我看到網絡請求正常運行,我看到200響應和預期的響應數據,但由於某種原因,成功功能從未被擊中。有任何想法嗎? – Paul

+0

真棒,爲我工作。保羅,如果你沒有看到任何建議,那可能是Google對你沒有任何幫助。我非常驚訝我的自定義網站搜索提供的建議有多少;我最終在CSE控制面板中手動添加了大量數據。 – jfsaliba

+0

太好了,非常感謝,因爲它也適用於我。我唯一的問題是'.ui-helper-hidden-accessible'跨度現在出現在關閉body標籤之前。這是可以關閉的東西,而不是使用CSS來隱藏它? – onebitrocket

1

在(2013年6月),寫的時候,是需要有一個自動完成,而仍然得到結果的一種較爲容易的方法XML:

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

  • 的「絕招」是,你可以指定「resultsUrl」,這意味着您可以直接在實際的搜索結果你通過XML API生成一個頁面,而無需實現搜索你自己裝盒UX。
相關問題