AJAX-显示与用户的连接的当前状态

时间:2018-09-24 13:49:42

标签: javascript python jquery ajax django

我将需要从许多数据源中提取数据-这是一个耗时的过程。 如果用户发送表格,程序将从7个表中提取数据(使用ajax)

我想提供一个信息,例如“从table1提取数据”,“从table2提取数据”等等。

但不知道如何执行-这种任务是否有好的标准? 我正在使用python / django作为后端

预先感谢

1 个答案:

答案 0 :(得分:1)

您可以使用XHR onprogress function在JavaScript中流式传输数据。每当从服务器刷新数据时,都会定期调用该函数。因此,只要您想显示当前状态,就可以在Python中使用sys.stdout.flush()强制刷新。


test.py

import sys
import time

for x in range(5):
    print(x)
    sys.stdout.flush()
    time.sleep(1)

test.html

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<button id="btn">Begin Stream</button>
<div id="app"></div>

<script>
    $(function() {
        $("#btn").on("click", () => {

            $.ajax('test.py', {
                xhrFields: {
                    onprogress: (e) => {
                        $("#app").html(e.currentTarget.response);
                    }
                }
            })
            .done((data) => {
                $("#app").html(`DONE: ${data}`);
            })
            .fail((data) => {
                $("#app").html(`ERROR: ${data}`);
            });
        });
    });
</script>