Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何将Wikipedia opensearch API与Typeahead.js一起使用?_Jquery_Typeahead.js_Bootstrap Typeahead_Wikipedia Api_Twitter Typeahead - Fatal编程技术网

Jquery 如何将Wikipedia opensearch API与Typeahead.js一起使用?

Jquery 如何将Wikipedia opensearch API与Typeahead.js一起使用?,jquery,typeahead.js,bootstrap-typeahead,wikipedia-api,twitter-typeahead,Jquery,Typeahead.js,Bootstrap Typeahead,Wikipedia Api,Twitter Typeahead,有人能给我一个代码示例,说明我如何将维基百科开放式搜索API与TwitterTypeahead.js结合使用吗?我知道我应该从远程选项调用它,但我不知道如何检索值 例如: 这是json响应,来自 这是一个带有remote的typeahead.js,显然不起作用 var wikiSuggestions = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), queryTokenize

有人能给我一个代码示例,说明我如何将维基百科开放式搜索API与Twitter
Typeahead.js
结合使用吗?我知道我应该从远程选项调用它,但我不知道如何检索值

例如: 这是json响应,来自

这是一个带有remote的
typeahead.js
,显然不起作用

var wikiSuggestions = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: {
    url: 'https://en.wikipedia.org/w/api.php?format=json&action=opensearch&lang=en&search=%QUERY',
    wildcard: '%QUERY'
  }
});

$('#remote .typeahead').typeahead(null, {
  name: 'wiki',
  display: 'value',
  source: wikiSuggestions
});

我怎样才能让它工作?我不知道如何检索建议页面的所有标题,也不知道如何检索包含文章标题的数组。

您可以使用javascript对其进行转换

function openSearchConverter(osResults){
  console.log(osResults);
  var results = [];
  for(var i = 0; i < osResults[1].length;i++){
    results.push({
      name: osResults[1][i],
      desc: osResults[2][i],
      url: osResults[3][i],
    });
  }
  return results;
}
您可以使用以下内容中的
displayKey:'name'
引用对象:

var wikiSuggestions = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: {
    url: 'https://en.wikipedia.org/w/api.php?format=json&action=opensearch&lang=en&search=%QUERY',
    wildcard: '%QUERY',
    filter: openSearchConverter
  }
});
$('#remote .typeahead').typeahead(null, {
  name: 'wiki',
  displayKey: 'name',
  source: wikiSuggestions
});

您可以使用javascript对其进行转换

function openSearchConverter(osResults){
  console.log(osResults);
  var results = [];
  for(var i = 0; i < osResults[1].length;i++){
    results.push({
      name: osResults[1][i],
      desc: osResults[2][i],
      url: osResults[3][i],
    });
  }
  return results;
}
您可以使用以下内容中的
displayKey:'name'
引用对象:

var wikiSuggestions = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  remote: {
    url: 'https://en.wikipedia.org/w/api.php?format=json&action=opensearch&lang=en&search=%QUERY',
    wildcard: '%QUERY',
    filter: openSearchConverter
  }
});
$('#remote .typeahead').typeahead(null, {
  name: 'wiki',
  displayKey: 'name',
  source: wikiSuggestions
});

数据是什么样子的?您知道如何使用ajax调用远程api吗?@whipdancer我不知道如何告诉脚本检索标题数组中的所有值。我知道这很简单,但这是我第一次使用typeahead.js,网上的例子也不多。在
jQueryUI autocomplete
上,我没有问题。不要使用typeahead.js,它几乎有300个未解决的问题,并且不再维护。数据是什么样子的?您知道如何使用ajax调用远程api吗?@whipdancer我不知道如何告诉脚本检索标题数组中的所有值。我知道这很简单,但这是我第一次使用typeahead.js,网上的例子也不多。在
jQueryUI autocomplete
上,我没有问题。不要使用typeahead.js,它几乎有300个未解决的问题,不再维护。