Javascript 在JS单击事件上在Flask中呈现_模板
我试图通过单击按钮来调用Flask中的函数。单击按钮时,将运行以下脚本 JSJavascript 在JS单击事件上在Flask中呈现_模板,javascript,jquery,python,ajax,flask,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_templ
$("#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')
这里的问题是,
调用的
被打印,并且GET/callback HTTP/1.1200
也被记录,但是callback.html
没有被呈现-页面保持不变。我猜这可能不是解决这个问题的最佳方法,但如果是这样,推荐的方法是什么?$。get
只向服务器发送一个HTTP请求,但实际上不处理从服务器返回的数据(在您的情况下,渲染模板)
试着这样做:
$("#load_btn").click(function() {
$("html").load("/callback");
}
或者,如果渲染的模板不包含任何
标记,则可以只包含正文内容
$("#load_btn").click(function() {
$("body").load("/callback");
}
或者,您可以将“body”替换为特定元素,以仅替换页面的特定部分
如果要重定向用户,请执行以下操作:
$("#load_btn").click(function() {
window.location = "/callback";
}
这将替换当前页面中的内容。我希望用户被重定向到mysite.com/callback,并为该页面呈现
callback.html
,如果这有意义的话。我之所以通过flask应用程序将其发送回去,而不是直接在HTML中加载它,是因为我需要在回调中运行一个函数。我已经更新了我的应答谢谢,这改变了url,但它仍然不能解决我的问题。我正在寻找在执行回调
方法中的代码后发生重定向(我在我的原始帖子中用…
表示)。是的,这就是发生的情况。当用户单击#load_btn
元素时,将调用单击处理程序,该处理程序将更改url。浏览器从服务器获取此url的内容。然后,运行回调
函数中的任何代码。然后,呈现模板,并将响应发送到浏览器http是一个基于请求和响应的非常简单的协议。因此,当用户转到/callback
时,回调函数只能发送一个响应。有两种方法,但最简单的方法是让回调
函数在后台线程中运行长期运行的任务,然后立即返回包含进度条的响应模板。然后,该页面需要向服务器发送请求(使用$.get
)以请求进度。您可以创建一个类似于/callback\u progress
的烧瓶路由来返回此信息。