Typeahead ajax自动完成不起作用

Typeahead ajax自动完成不起作用,ajax,autocomplete,typeahead,bloodhound,Ajax,Autocomplete,Typeahead,Bloodhound,我试图从ajax数据中实现typeahead自动完成,但它不起作用 这是我的密码 HTML })) 当我从浏览器查看网络数据时,它正确地得到了如下建议数据 但它不适用于自动完成 现在我能做什么?您需要在侦探犬实例的datumTokenizer方法中包含要用于从建议数组中筛选对象的键。只有在建议是字符串数组的情况下,才能将建议作为Bloodhound.tokenizers.whitespace的参数传递-标记化器期望最终能够解析为可匹配的字符串标记的参数 如果要与建议数组中的标签进行匹配,则

我试图从ajax数据中实现typeahead自动完成,但它不起作用

这是我的密码

  • HTML

    }))

当我从浏览器查看网络数据时,它正确地得到了如下建议数据

但它不适用于自动完成


现在我能做什么?

您需要在
侦探犬
实例的
datumTokenizer
方法中包含要用于从
建议
数组中筛选对象的键。只有在建议是字符串数组的情况下,才能将建议作为
Bloodhound.tokenizers.whitespace的参数传递-标记化器期望最终能够解析为可匹配的字符串标记的参数

如果要与建议数组中的标签进行匹配,则需要将
datumTokenizer
函数更改为返回
Bloodhound.tokenizers.whitespace(suggestions.label)

或者,如果要检查多个属性,则需要返回一个标记化器数组,如
[Bloodhound.tokenizers.whitespace(suggestions.label)、Bloodhound.tokenizers.whitespace(suggestions.language)]

请参阅下面针对数组的一个和两个属性进行匹配的示例片段

$(文档).ready(函数(){
const data={“建议”:[{“标签”:“美利坚合众国、纽约、康沃尔、安哥拉路”,“语言”:“en”,“国家代码”:“USA”,“地点ID”:“NT_7Cpok364jILgH4ksUcyjpC”,“地址”:{“国家”:“美利坚合众国”,“州”:“纽约”,“县”:“橙色”,“城市”:“康沃尔”,“街道”:“安哥拉路”,“邮政编码”:“12518”},“距离”:14896,“匹配级别”:“街道”}{“标签”:“美利坚合众国,纽约州,加里森,奥尔巴尼邮路”,“语言”:“en”,“国家代码”:“USA”,“地点ID”:“NT_DM6n2RQmjZ1YvBjMS6MyGA”,“地址”:{“国家”:“美利坚合众国”,“州”:“纽约州”,“县”:“普南”,“市”:“加里森”,“区”:“加里森”,“街道”:“奥尔巴尼邮路”,“邮政编码”:“10524”},“距离”:23981,“匹配级别”:“街道”},{“标签”:“美利坚合众国、纽约、蒙特罗斯、奥尔巴尼邮路”,“语言”:“en”,“国家代码”:“USA”,“地点ID”:“NTĀNNt..Hu2Z5yXhvu4UpGXwA”,“地址”:{“国家”:“美利坚合众国”、“州”:“纽约”、“县”:“韦斯特切斯特”、“城市”:“蒙特罗斯”、“街道”:“奥尔巴尼邮路”,“邮政编码”:“10548”},“距离”:24394,“匹配级别”:“街道”},{“标签”:美利坚合众国,纽约州,哈德逊河上的巴顿,奥尔巴尼邮路,语言:“,”国家代码“,”美国“,”地点ID“,”NT撸U fokNpGY5GJxSkp195bkloA“,”地址“{”国家“:”美利坚合众国“,”州“,”纽约“,”县“:”韦斯特切斯特“,”城市“:”哈德逊河上的巴顿“,”街道“,”奥尔巴尼邮路“,”邮政编码“:”10520“,”距离“,”26329,“匹配级别“,”街道“}”;
var建议=新警犬({
当地:数据。建议,
datumTokenizer:函数(建议){
return Bloodhound.tokenizers.whitespace(建议.标签);
},
queryTokenizer:猎犬,标记,空白,
});
var suggestions2=新猎犬({
当地:数据。建议,
datumTokenizer:函数{
返回['countryCode','matchLevel'].reduce(函数(p,c){
return p.concat(猎犬、标记器、空格(s[c]))
}, []);
},
queryTokenizer:猎犬,标记,空白,
});
$(“#订单地址”)。请提前键入({
提示:没错,
推荐理由:没错,
最小长度:1
},
{
名称:"建议",,
显示键:功能(建议){
返回建议。标签;
},
来源:suggestions.ttAdapter()
});
$('#订单地址2')。请提前键入({
提示:没错,
推荐理由:没错,
最小长度:1
},
{
名称:“建议2”,
显示键:功能(建议){
返回建议。标签;
},
来源:suggestions2.ttAdapter()
});
});

仅与标签匹配

与countryCode和matchLevel匹配


谢谢你,@litel。你给了我很大的帮助。
<input type="search" class="typeahead" id="order_address" autocomplete="off">
var suggestions = new Bloodhound({
    remote: {
        url: 'https://autocomplete.geocoder.api.here.com/6.2/suggest.json?app_id=...app_code=...&country=USA&mapview=41.382995,-74.301616;41.305715,-74.092278&query=%QUERY%',
        wildcard: '%QUERY%',
        filter: function (response) {
            return response.suggestions;
        }
    },
    datumTokenizer: function(suggestions) {
        return Bloodhound.tokenizers.whitespace(suggestions);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
});

$('#order_address').typeahead({
        hint: true,
        highlight: true,
        minLength: 1
    },
    {
        name: 'suggestions',
        displayKey: function(suggestions) {
            return suggestions.label;
        },
        source: suggestions.ttAdapter()
});
{"suggestions":[{"label":"United States Of America, NY, Cornwall, Angola Rd","language":"en","countryCode":"USA","locationId":"NT_7Cpok364jILgH4ksUcyjpC","address":{"country":"United States Of America","state":"NY","county":"Orange","city":"Cornwall","street":"Angola Rd","postalCode":"12518"},"distance":14896,"matchLevel":"street"},{"label":"United States Of America, NY, Garrison, Albany Post Rd","language":"en","countryCode":"USA","locationId":"NT_DM6n2RQmjZ1YvBjMS6MyGA","address":{"country":"United States Of America","state":"NY","county":"Putnam","city":"Garrison","district":"Garrison","street":"Albany Post Rd","postalCode":"10524"},"distance":23981,"matchLevel":"street"},{"label":"United States Of America, NY, Montrose, Albany Post Rd","language":"en","countryCode":"USA","locationId":"NT_NNt..Hu2Z5yXhvu4UpGXwA","address":{"country":"United States Of America","state":"NY","county":"Westchester","city":"Montrose","street":"Albany Post Rd","postalCode":"10548"},"distance":24394,"matchLevel":"street"},{"label":"United States Of America, NY, Croton-on-Hudson, Albany Post Rd","language":"en","countryCode":"USA","locationId":"NT_fokNpGY5GJxSkp195bkloA","address":{"country":"United States Of America","state":"NY","county":"Westchester","city":"Croton-on-Hudson","street":"Albany Post Rd","postalCode":"10520"},"distance":26329,"matchLevel":"street"}]}