jquery – AJAX和Jinja2

前端之家收集整理的这篇文章主要介绍了jquery – AJAX和Jinja2前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想在Jinja2模板中使用带参数的AJAX调用.但是我如何才能实现呢?我想做这样的事情.

JavaScript的:

$.get("test.html",{ name: "John",time: "2pm" } );

jinja模板:

最佳答案
您需要访问服务器端的请求对象以获取参数.我假设您正在使用Flask,但如果没有,基本思想在其他Web框架上应该是相同的.假设您有一个简单的小index.html,您可以使用Javascript来进行Ajax查询

$.get("{{ url_for('ajax') }}",{name: "John",time: "2pm"});

请注意,如果您没有使用Jinja2来呈现脚本部分,请将url_for() – 调用替换为实际的URL,所以我的示例中的/ ajax更像下面的内容

$.get("/ajax",time: "2pm"});

现在,在服务器端你会有这样的事情:

from flask import Flask,render_template,request

app = Flask(__name__)

@app.route('/ajax')
def ajax():

    #Access arguments via request.args
    name = request.args.get('name')
    time = request.args.get('time')

    #NOTE: In real code,check that the arguments exist

    #Silly logging call to show that arguments are there
    app.logger.info(name)
    app.logger.info(time)

    #Do stuff here to do what you want or modify name/time
    ...

    #Render template and pass the arguments to it
    return render_template('ajax.html',name=name,time=time)

@app.route('/index')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

和ajax.html看起来像这样的例子:

所以request.args是你可以访问你用GET传递的参数的地方,但你需要使用render_template()调用将它们显式传递给Jinja2. Jinja2只是一种模板化的语言,它不知道你的论点(1),除非你把它们传递给它.

1)除了一些例外.例如,Flask会像请求对象一样隐式地向Jinja2传递一些参数.

猜你在找的jQuery相关文章