2011-11-22 54 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。