jquery - Flask + jquery 自动完成

标签 jquery autocomplete flask

还有一个关于 Flask 和 jquery 自动完成的问题。我一直在阅读并尝试以下已回答的问题,但没有成功:

Flask AJAX Autocomplete

Using jQuery autocomplete with Flask

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

但是由于某些原因(也许是我不明白应该做什么),回调 autocomplete(..) 在我加载页面时仅执行一次(并正确自动完成中的值) NAMES),但在文本框中输入时绝不会。

search.html

<head>
    <meta charset="utf-8">
    <link   rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js"></script>
</head>

{{ form.autocomp.label }}: {{ form.autocomp }}

<script>
    $(function() {
        $.ajax({
            url: '{{ url_for("autocomplete") }}'
            }).done(function (data) {
                $('#autocomplete').autocomplete({
                    source: data,
                    minLength: 2
                });
            });
        });
</script>

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 中:

<script>
$(function() {
    $.ajax({
        url: '{{ url_for("autocomplete") }}'
        }).done(function (data) {
            $('#autocomplete').autocomplete({
                source: data.json_list,
                minLength: 2
            });
        });
    });
</script>

关于jquery - Flask + jquery 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22449884/

相关文章:

jquery - Rails-jquery-autocomplete 搜索 school_name 但保存 school_id

postgresql - WTForms StringField 写入 Postgres 的编程错误

javascript - 收到post数据后触发setinterval

javascript - 仅使用 Javascript (jQuery) 和 CSS 隐藏/显示部分文本

java - IntelliJ IDEA 在 Debug模式下不拦截 JLine 代码补全

autocomplete - 标准库中的项目未显示 Rust 自动完成

python - 如何将Heruko与本地计算机的Docker API(Python SDK)结合使用?

python - Apache 上找不到 Flask 的静态文件

javascript - 通过 PushState 和 Jekyll 使用 AJAX 加载

jquery图像翻转旋转效果