我希望使用flask和jQuery动态填充结果。
我有一个程序在后端函数中运行一系列长任务,将结果附加到列表中。有没有办法通过ajax / jquery动态地将结果添加到页面(比如每隔几秒),直到后端运行完毕(几乎像Travelocity这样的网站如何动态地添加到页面的航班)。目前,我无法理解如何在后端仍在运行时使用ajax更新结果(在返回任何结果之前等待它完成)。
我的假设例子:
$.ajax({
url: '/test',
type: 'post',
data: 'Begin Running Backend',
dataType: 'json',
success: function(data) {
while(**BACKEND IS RUNNING**){
$("#samplediv").text(data.current_results);
}
},
error: function(data) {
console.log("FAILED");
}
});
在后端:
@app.route("/test",methods=['GET','POST'])
def test():
run_script() #In this script, a for loop is adding results to a list
return jsonify(results=list)
答案 0 :(得分:1)
此处不需要while
循环,因为在服务器响应良好之前,您不会收到success
回调。
然而,由于响应时间较长,您可能遇到的最大问题是可能timeout
:
您可以添加以下内容以最多1分钟:
timeout: 60000
然后在您的成功函数中,从结果logging
开始:
success: function (data) {
console.log(data);
}
您不需要使用while
循环以这种方式暂停客户端。