我正在尝试在烧瓶中获取自动完成功能,
这是html页面中的JS,它具有自动填充输入字段
$(function() {
$("#autocompletes").autocomplete({
source:function(request, response) {
$.getJSON("{{url_for('autocomplete')}}",{
q: request.term, // in flask, "q" will be the argument to look for using request.args
}, function(data) {
response(data.matching_results); // matching_results from jsonify
});
},
minLength: 3,
delay: 200,
select: function(event, ui) {
console.log(ui.item.value); // not in your question, but might help later
}
});
})
这是Ajax请求调用的函数,
@app.route('/autocomplete', methods=['GET'])
def autocomplete():
search = request.args.get('q')
results = getComplete(search)
return jsonify(matching_results=results)
这是查询数据库并返回结果列表的函数,
def getComplete(search):
sql = "SELECT itemId FROM Database where itemId like '%" + str(search) + "%'"
result = pd.read_sql_query(sql,cnxn).values.tolist()
return result
实际上,当我在输入字段中键入内容时,自动完成功能可以正常工作,在开发工具的网络部分,我可以看到正在打印的itemid列表,如下所示:
{matching_results:[[“ Pippo”]]} matching_results:[[“ Pippo”]]
但是建议列表仅显示空着的选择..有什么建议吗?我认为格式是错误的,但是我真的不知道如何正确格式化,人们说JSON必须包含一个{value:__,label:__} dict,但是我怎么能做到这一点(如果那是问题)?