【发布时间】:2014-03-20 21:29:36
【问题描述】:
我想从模板中的数据库加载项目。这个加载过程可能需要几秒钟,所以我想在过程完成之前显示页面。
{% for item in get_items() %}
<div> ... </div>
{% end %}
如何在不阻塞页面的情况下加载这些数据?
【问题讨论】:
标签: javascript jquery django tornado template-engine
我想从模板中的数据库加载项目。这个加载过程可能需要几秒钟,所以我想在过程完成之前显示页面。
{% for item in get_items() %}
<div> ... </div>
{% end %}
如何在不阻塞页面的情况下加载这些数据?
【问题讨论】:
标签: javascript jquery django tornado template-engine
最简单的方法是两个视图:与您的 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 中执行此操作,虽然有些冗长。
【讨论】:
在没有它们的情况下加载页面,然后通过单独的 Ajax 调用添加它们。
【讨论】: