在Flask中运行后端时动态填充html

时间:2017-01-20 23:16:51

标签: javascript jquery python ajax flask

我希望使用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)

1 个答案:

答案 0 :(得分:1)

此处不需要while循环,因为在服务器响应良好之前,您不会收到success回调。

然而,由于响应时间较长,您可能遇到的最大问题是可能timeout

您可以添加以下内容以最多1分钟:

timeout: 60000

然后在您的成功函数中,从结果logging开始:

success: function (data) {
    console.log(data);
}

您不需要使用while循环以这种方式暂停客户端。