【发布时间】:2017-01-20 23:16:51
【问题描述】:
我希望使用烧瓶和 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)
【问题讨论】:
-
你需要从根本上改变你做事的方式。无需进入 websockets,HTTP 请求响应周期就是一次性交易。您的服务器将响应一次请求。因此,要不断更新某些内容(没有 websockets),您需要编写一些东西来请求服务器的结果,然后服务器像“请求启动”信号一样发回,然后您的客户端会定期向服务器询问它的任何结果到目前为止收集,直到其中一个请求,服务器给出“没有更多结果”信号。 Travelocity 可能使用 websockets。
标签: javascript jquery python ajax flask