jQuery Autocomplete如何动态过滤响应

时间:2014-05-04 20:54:59

标签: javascript jquery google-app-engine autocomplete

我目前正在使用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>

但是,如果我改为&#34; lookup:&#34;使用外部数据存储区(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 那里有很多选择,如果有人能给我一些指示,可能会有所帮助,那就太棒了。

2 个答案:

答案 0 :(得分:0)

该演示未使用外部数据源。

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

答案 1 :(得分:-1)

当您尝试使用您的javascript向其他服务器请求时,由于安全问题,它将被Web浏览器阻止。 (您可以通过关键字Cross domain javascript request)进行谷歌搜索

如果你使用java,你可以创建一些java代码 - Controller或Servlet(不是javascript)请求其他服务器并将其传递给你的html(就像一个桥)。或者,如果您使用PHP或Python,则可以执行相同的操作。