Flask + jquery自动完成

关于flask和jquery自动完成的另一个问题。 我一直在阅读并尝试以下已回答的问题而没有任何成功:

Flask AJAX自动完成

在Flask中使用jQuery自动完成function

特别是第二个答案完全符合我的情况。

但是由于某些原因(可能是我不理解应该做什么),回调autocomplete(..)仅在我加载页面时执行一次(并且在NAMES正确地自动完成值)但从不在文本框中键入时执行。

search.html

       {{ form.autocomp.label }}: {{ form.autocomp }}  $(function() { $.ajax({ url: '{{ url_for("autocomplete") }}' }).done(function (data) { $('#autocomplete').autocomplete({ source: data, minLength: 2 }); }); });  

application.py

 from flask import Flask, Response, render_template, request import json app = Flask(__name__) import wtforms as wt from wtforms import TextField, Form NAMES=["abc","abcd","abcde","abcdef"] class SearchForm(Form): autocomp= TextField('autocomp',id='autocomplete') @app.route('/autocomplete',methods=['GET']) def autocomplete(): search = request.args.get('term') app.logger.debug(search) return Response(json.dumps(NAMES), mimetype='application/json') @app.route('/',methods=['GET','POST']) def index(): form = SearchForm(request.form) return render_template("search.html",form=form) if __name__ == '__main__': app.run(debug=True) 

试试这个

 from flask import jsonify NAMES=["abc","abcd","abcde","abcdef"] @app.route('/autocomplete',methods=['GET']) def autocomplete(): search = request.args.get('term') app.logger.debug(search) return jsonify(json_list=NAMES) 

在Jquery:

  

它不起作用,因为建议的代码段中有一个missprint:

 from flask import jsonify NAMES=["abc","abcd","abcde","abcdef"] @app.route('/autocomplete',methods=['GET']) def autocomplete(): search = request.args.get('term') 

search = request.args.get(’term’) ‘term’更改为’autocomplete’。 所以正确的代码应该如下:

 from flask import jsonify NAMES=["abc","abcd","abcde","abcdef"] @app.route('/autocomplete',methods=['GET']) def autocomplete(): search = request.args.get('autocomplete')