jQuery自动完成如何动态过滤响应

How does jQuery Autocomplete dynamically filter responses

本文关键字:动态 过滤 响应 何动态 jQuery      更新时间:2023-09-26

我目前使用http://www.devbridge.com/sourcery/components/jquery-autocomplete/#jquery-autocomplete来自动完成输入。

我的问题是:上面链接的演示是如何自动过滤结果的?

如果我使用本地数据存储,它会为我过滤结果。

<script>
var suggestions = [ "Afghan", 
                    "African", 
                    "Senegalese", 
                    "American", 
                    "Arabian", 
                    "Arab Pizza", 
                    "Argentine", 
                    "Armenian", 
                    "Asian Fusion", 
                    "Asturian", 
                    "Australian", 
                    "Austrian" 
                  ]
$('#categories').autocomplete({
    // serviceUrl: '/autocomplete/categories',
    lookup: suggestions,
    delimiter: ',',
    maxHeight: 200,
    minChars: 2
});
</script>

但是,如果我将"lookup:"替换为外部数据存储(serviceUrl),则不再过滤结果。

下面是我的外部调用版本的代码:

class AjaxHandler(webapp2.RequestHandler):
    def __init__(self, request, response):
        self.initialize(request, response)
        self.categories = []
        with open("static/categories.data") as categories_file:
            for entry in categories_file:
                self.categories.append(str(entry))
                print entry

    def get(self):
        suggestions = {"suggestions": self.categories}
        self.response.write(json.dumps(suggestions))
        self.response.headers.add_header("Content-Type", "application/json; charset-UTF-8") 

在这个版本中,它仍然对所有条目进行编辑距离,但过滤不再工作。

下面是它们的API: https://github.com/devbridge/jQuery-Autocomplete这里有很多选项,如果有人能给我指点一下哪一个可能有帮助,那就太好了。

这个演示没有使用外部数据源。

但是我不确定您在问什么:使用外部数据源的全部意义在于它是进行过滤的源—它只返回与Ajax get发送的令牌匹配的值。否则,您不妨在原始请求中包含所有数据。

当你试图用javascript请求其他服务器时,通常会被Web浏览器阻止,因为安全问题。(可通过关键词Cross domain javascript request搜索)

如果你使用java,你可以创建一些java代码-控制器或Servlet(不是javascript)请求到其他服务器,并将其传递给你的html(就像桥梁)。如果使用PHP或Python,也可以做同样的事情。