以前有人问过这个问题,我想我已经做了我在那里看到的事情,但我真的不知道我做错了什么。我对 jQuery 了解不多,但我会尽力解释我正在尝试做的事情。
我想根据来自数据库的查询自动完成,所以我的模板中有这个:
<script type="text/javascript">
$(function() {
$( "#function_name" ).autocomplete({
source: '{{url_for("autocomplete")}}',
minLength: 2,
});
});
</script>
<form id="function_search_form" method="post" action="">
{{form.function_name}}
</form>
表单由这个 Flask 表单类生成:
class SearchForm(Form):
function_name = TextField('function_name', validators = [Required()])
这是自动完成功能:
@app.route('/autocomplete')
def autocomplete():
results = []
search = request.args.get('term')
results.append(db.session.query(Table.Name).filter(Table.Name.like('%' + search + '%')).all())
return dumps(results)
所以 jQuery 应该去自动完成功能并获取一些 JSON 来自动完成。至少我认为这就是正在发生的事情。我在这里做错了什么?