gpt4 book ai didi

jquery - 将 Typeahead 与 Google 自定义搜索引擎结合使用

转载 作者:行者123 更新时间:2023-12-03 22:49:17 26 4
gpt4 key购买 nike

我正在尝试让 Twitter Typeahead+Bloodhound 与 Google 的 CSE 配合使用。

到目前为止,我已经成功返回结果,但无法计算出 datumTokenizer。

var results = new Bloodhound({
datumTokenizer: function(data) {
return Bloodhound.tokenizers.whitespace(d.value)
},
queryTokenizer: Bloodhound.tokenizers.obj.whitespace,
remote: {
url: "http://clients1.google.com/complete/search?client=partner&hl=en&sugexp=gsnos%2Cn%3D13&gs_rn=25&gs_ri=partner&partnerid=004914516364918182382%3Ayfqw09r4qvu&types=t&ds=cse&cp=3&gs_id=15&q=%QUERY&callback=showResults&duffCallback=?",
ajax: $.ajax({type:'GET',dataType:'jsonp',jsonp:'duffCallback'}),
filter: showResults
}
});

参见 fiddle :http://jsfiddle.net/thugsb/3KAjh/

您将看到我已从 showResults() 以数组形式返回结果。但是,从 filter: 调用 showResults() 似乎没有执行任何操作,因为删除该行没有任何效果。所以我不太确定发生了什么。

注意 duffCallback 是我通过阅读 this question 得出的结果。如果有更好的方法来完成这项工作,我洗耳恭听!

最佳答案

首先,您使用的 datumTokenizer 不太正确。您需要将其更改为:

datumTokenizer: function(data) {
return Bloodhound.tokenizers.whitespace(data.value)
}

请注意“whitespace”函数现在如何引用“data”输入参数,而不是您正在使用的“d”。

至于您的问题的解决方案,请在此处查看它的工作原理(例如尝试搜索“athletics”):

http://jsfiddle.net/Fresh/FYavC/

您的代码的主要问题在于您的远程 URL(这也让我感到困惑!)。有问题的查询字符串参数是:

...&callback=showResults&duffCallback=?

“duffCallback=?”不需要,因为在 ajax 对象中指定“datatype:'jsonp' ”会自动添加 jsonp 请求使用的回调详细信息(即“?callback=?”)。另外,“callback=showResults”也不是必需的,因为当成功发出 jsonp 请求时,Bloodhound 框架会隐式调用过滤器方法。

我同意,使用 Typeahead.js 时应如何进行远程调用并不明显。一个远程调用的示例,其中指定了 ajax 对象,并且 Typeahead.js 网站上的一些文档会很有用!

关于jquery - 将 Typeahead 与 Google 自定义搜索引擎结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23394245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com