JS/jQuery Flask:
@app.route('/autocomplete', methods=['GET'])
def autocomplete():
search = request.args.get('q')
query = db_session.query(Movie.title).filter(Movie.title.like('%' + str(search) + '%'))
results = [mv[0] for mv in query.all()]
return jsonify(matching_results=results)
HTML/JQuery:
<head>
<link href="//code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" rel="Stylesheet"></link>
<script src="//code.jquery.com/jquery-2.2.0.min.js"></script>
<script src="//code.jquery.com/ui/1.10.2/jquery-ui.js" ></script>
<script type="text/javascript">
$(function() {
$("#autocomplete").autocomplete({
source:function(request, response) {
$.getJSON("{{url_for('autocomplete')}}",{
q: request.term,
}, function(data) {
response(data.matching_results);
});
},
minLength: 2,
select: function(event, ui) {
console.log(ui.item.value);
}
});
})
</script>
</head>
<body>
<div>
<input name="autocomplete" type="text" id="autocomplete" class="form-control input-lg"/>
</div>
</body>
: 'q' - , jQuery $.getJSON ajax call. request.args.get. , . , , for + append; .
jsonify results, , matching_results, . json.dumps, ajax. . , (TL/DR: ).
, , , script/flask "" . , ajax results, matching_results. ( javascript) data.
matching_results , script. , , , JS/jquery.
, select , , .
jquery-autocomplete . " AJAX" .