【问题标题】:How does jQuery Autocomplete dynamically filter responsesjQuery Autocomplete 如何动态过滤响应
【发布时间】:2014-05-04 20:54:58
【问题描述】:

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

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

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

<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 那里有很多选择,如果有人可以给我一些可能有帮助的建议,那就太好了。

【问题讨论】:

    标签: javascript jquery google-app-engine autocomplete


    【解决方案1】:

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

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

    【讨论】:

    • 哦,我使用的是外部源,因为它包含很多数据条目。我想读入条目,而不是将所有条目放在 Javascript 数组中。这可能不是它应该使用的方式吗?
    【解决方案2】:

    当您尝试使用您的 javascript 向其他服务器请求时,通常会因为安全问题而被 Web 浏览器阻止。 (您可以通过关键字Cross domain javascript request google)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2013-08-19
      • 2020-03-09
      相关资源
      最近更新 更多