如何创建增量加载网页

时间:2009-12-17 15:49:06

标签: jquery python

我正在写一个处理大量数据的页面。它会一直持续到我的结果页面加载(几乎无限),因为返回的数据太大了。因此,我需要实现一个递增加载页面,就像在url上一样:

http://docs.python.org/

每次输入搜索词时,它都会继续加载和加载,直到得到一些结果,它会逐渐显示,非常酷:D。

[edit]我正在使用python CGI(服务器)+ Jquery(客户端)。我在这里问了一个类似的问题:

Display the result on the webpage as soon as the data is available at server

我试图在服务器上只请求一个脚本并让客户端页面逐步显示即将到来的结果,这让我很头疼。如果我没有错,那么长时间的民意调查,或类似的事情不适用于这种情况吧?

我正在尝试做flush()的事情,但也许我在这里遗漏了一些东西,我无法让它工作:(,结果总是一次到客户端。再加上前几个字节,前几个结果是非常通用的术语。我真的很感激,一个人可以给我一些正在运行的代码,因为我现在非常困惑。非常感谢。

[编辑]当我试图坚持使用call-on-only方式时,我设法关闭了apache2的mod_deflate,但到目前为止我失败了。我搜索了这个问题,有些像我这样的情况,这没有运气:(。

6 个答案:

答案 0 :(得分:3)

有各种可行的方法,但基本的技巧是让搜索程序在完成之前将结果返回到线路。这通常是通过显式调用flush()调用或等效的每一个结果来完成的。

现在,要介绍它们,你可以

  • 使用AJAX:返回一个非常小的页面,其中包含将触发搜索的javascript,这会在刷新结果时修改DOM(或者使用参数表示多少次调用搜索程序你想要的结果和偏移量)

  • 使用简单的HTML:使用浏览器不等待完成渲染的HTML(这主要是为了避免使用表,因为表通常在整个表到达时呈现)

当然,如果我们知道你在编程什么,你可以得到更具体的建议。

答案 1 :(得分:1)

我认为你必须使用ajax来达到这种效果。

Python JavaScript

中查看此内容
performSearch : function(query) {
// create the required interface elements
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
this.status = $('<p style="display: none"></p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);

$('#search-progress').text(_('Preparing search...'));
this.startPulse();

答案 2 :(得分:1)

听起来像是AJAX的时间。当一个人提交查询时,向服务器发送一个AJAX请求以获得一些结果。显示一些“加载”消息,直到您有响应。在页面中设置一个Javascript计时器,使其每隔几秒刷新一次结果输出,直到可能将某个标志设置为它知道没有更多结果的位置,并且它可以停止刷新。让服务器可能会在会话中或临时在数据库中存储结果。您的计时器可以向服务器发出AJAX请求,以查看是否已找到任何进一步的结果并将其存储在会话/数据库中,并更新HTML输出,以便显示到目前为止找到的所有结果。

这可能很有趣/有用:Groundbreaking AJAX Incremental Search White Paper Released - A Data Matching Engine To The Rescue

答案 3 :(得分:1)

您没有指定语言或您正在显示的数据类型或访问方式,因此需要回答很多问题。当您滚动到页面底部时,是否要获取更多数据?这只是一个非常慢的搜索吗?

无论哪种方式,基本上有两种方法可以解决这个问题。有ajax方式,然后有“保持http连接打开”的方式。 ajax方式听起来对这个用例更有意义。

Ajax wayAjax with dynamic scrolling.有许多方法可以做到这一点。

这是一种有趣的长轮询方法,类似。 HTTP method using long polling

答案 4 :(得分:1)

执行此操作的方法是在页面加载后使用Javascript来检索数据,这通常称为“AJAX”。

如果您告诉我们您正在使用的平台,那么有人可以为您提供更具体的信息 - 有很多工具包可以帮助您在这里,您不必从头开始编写Javascript < / p>

答案 5 :(得分:1)

如果您打算尝试使用Javascript / AJAX,我建议jQuery。如果您从未有过使用JS的经验,但有时间阅读他们的入门指南,那么这是(IMO)开始的好地方/时间。获得相对令人印象深刻的东西并不需要太多工作。


此外,jQueryUI非常出色并且有几个非常有用的插件。我最喜欢的是标签插件,因为它允许您按照自己喜欢的方式设置完整的AJAX网站。它也非常容易剥皮,它们实际上在网站上有一个主题构建器,您可以自定义然后下载以供任何地方使用。很漂亮。

我最近的一个周末浪费时间We Came As Romans Sucks,利用了jQUI标签和皮肤的基本实现。最大的努力和巨大的收获。