JS Click事件中的Flask中的render_template

时间:2017-06-19 23:47:58

标签: javascript jquery python ajax flask

我试图通过单击按钮调用Flask中的函数。单击该按钮时,将运行以下脚本。

JS

$("#load_btn").click(function() {
    $.get("/callback");
}

烧瓶

@app.route('/callback')
def callback():
    print('called')
    ... # code here that needs to run before rendering callback
    return render_template('callback.html')

此处的问题是,called已打印,并且GET /callback HTTP/1.1 200也会被记录,但callback.html未呈现 - 页面保持不变。我猜这可能不是解决这个问题的最佳方法,但如果是这样,推荐的方法是什么?

1 个答案:

答案 0 :(得分:5)

$.get只是向您的服务器发送HTTP请求,但实际上并没有对从服务器返回的数据(在您的情况下,呈现的模板)做任何事情。

尝试这样的事情:

$("#load_btn").click(function() {
    $("html").load("/callback");
}

或者,如果您呈现的模板不包含任何<head>标记,只有正文内容,则可以

$("#load_btn").click(function() {
    $("body").load("/callback");
}

或者,您可以将特定元素的“body”替换为仅替换页面的特定部分。

如果您希望重定向用户,请执行以下操作:

$("#load_btn").click(function() {
    window.location = "/callback";
}