【问题标题】:How to load data without blocking?如何在不阻塞的情况下加载数据?
【发布时间】:2014-03-20 21:29:36
【问题描述】:

我想从模板中的数据库加载项目。这个加载过程可能需要几秒钟,所以我想在过程完成之前显示页面。

{% for item in get_items() %}
    <div> ... </div>
{% end %}

如何在不阻塞页面的情况下加载这些数据?

【问题讨论】:

    标签: javascript jquery django tornado template-engine


    【解决方案1】:

    最简单的方法是两个视图:与您的 URL 相关联的视图,它仅显示您的实际数据周围的“包装器”,并在其中包含一个 HTML 元素,例如:

    <div id="my-content">(loading data)</div>
    

    而且,假设您使用 jQuery,类似:

    <script>
        $("#my-content").load("/path/to/view/that/provides/data");
    </script>
    

    然后将第二个视图连接到该 URL。这应该返回 just 数据本身的格式化 HTML(所以可能只是那个表,或者你正在呈现它)。

    当然,您也可以不让第二个视图提供格式化的 HTML 来做到这一点;您可以让它生成 JSON 或 XML 或更多数据格式,然后使用 Javascript 格式化 that。在某些情况下,这可能更有效。

    如果您不使用 jQuery,请查看如何在您使用的任何框架中执行简单的“使用通过 AJAX 完成的此 URL 的响应填充此项目”调用 - 或者您也可以在原始 Javascript 中执行此操作,虽然有些冗长。

    【讨论】:

    • 嗯.. 谁来生成模板?这不行吗?
    【解决方案2】:

    在没有它们的情况下加载页面,然后通过单独的 Ajax 调用添加它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      相关资源
      最近更新 更多