自动填充jquery无法打印建议

时间:2015-09-11 14:38:56

标签: jquery ajax autocomplete jsonp

我用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"] 

它正在运作。请帮忙。

1 个答案:

答案 0 :(得分:0)

您提到的教程展示了两种向自动完成对象提供数据源的方法。

你想要AJAX,所以你应该这样使用它。该网站的相关示例:

$('#autocomplete').autocomplete({
    serviceUrl: '/autocomplete/countries',
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

因此,在初始化自动完成时不应使用lookup属性,但应初始化serviceUrl属性。 这也将处理AJAX调用,你不必关心它。

在返回的JSON字符串中,还需要确保data.suggestions数组包含数组元素,哪些元素应具有值和数据属性。