我用python创建了一个返回此函数的函数:
callback({"query": "can", "suggestions": "['Cane','Canal','Candy','Canis','Canoe','Canada','Canary','Canola','Cantil','Decane','Toucan','Candida','Candiru','Candoia','Canidae','Cannula','Indican','Pelican','Scanner','Acanthis','']", "data": "['Cane','Canal','Candy','Canis','Canoe','Canada','Canary','Canola','Cantil','Decane','Toucan','Candida','Candiru','Candoia','Canidae','Cannula','Indican','Pelican','Scanner','Acanthis','']"});
我正在尝试使用devbridge https://www.devbridge.com/sourcery/components/jquery-autocomplete/
的自动完成功能我设法用这样的ajax获取列表:
$.ajax({
url: url,
dataType:"jsonp",
jsonpCallback: 'callback',
success: function(data) {
alert(data.suggestions);
}
});
但是我无法使用自动完成功能。我改变了我的函数返回回调,因为我遇到了跨域url的问题,这也是我使用jsonp的原因。我还尝试将data.suggestions添加到数组
中 var availableTags = data.suggestions;
var stri = availableTags.replace(/["']/g, "");
availableTags = stri.replace("[","");
stri = availableTags.replace("]","");
suggestionsArray = stri.split(",");
并将其打印在jquery中,如下所示:
$( "#query" ).autocomplete({
lookup: suggestionsArray
});
但它不起作用。如果我手工制作
var suggestionsArray = ["cane","Canal"]
它正在运作。请帮忙。
答案 0 :(得分:0)
您提到的教程展示了两种向自动完成对象提供数据源的方法。
你想要AJAX,所以你应该这样使用它。该网站的相关示例:
$('#autocomplete').autocomplete({
serviceUrl: '/autocomplete/countries',
onSelect: function (suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
}
});
因此,在初始化自动完成时不应使用lookup属性,但应初始化serviceUrl属性。 这也将处理AJAX调用,你不必关心它。
在返回的JSON字符串中,还需要确保data.suggestions数组包含数组元素,哪些元素应具有值和数据属性。