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')