我可以在处理ajax页面时输出/刷新数据到屏幕吗?

问题描述:

我需要在我的页面上显示从表中拉出的记录列表。 Ajax工作正常(我查询数据库并将所有数据放在主页面中),但是如果我有很多记录(比如500+),它会挂起直到数据完全加载,然后它会被发送回页面并正确显示。我可以在处理ajax页面时输出/刷新数据到屏幕吗?

我希望能够在获取它们时在页面上显示记录,而不是*等到完成。我想用flush();在远程(ajax)页面内部,但它仍然等待,直到全部数据被加载。

这是我目前拥有的AJAX页面内:

开始的时候:

@apache_setenv('no-gzip', 1); 
@ini_set('zlib.output_compression', 0); 
@ini_set('implicit_flush', 1); 
for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); } 
ob_implicit_flush(1); 

然后,每当我有回声的呼叫:

ob_flush(); 

现在,如果我加载单独的ajax页面......它将在从数据库读取记录的同时列出记录。但是,如果我通过Ajax调用同一页面,它会挂起并一次发送所有数据。

有什么想法?

这是我使用来获取内容(Ajax)功能(“ID”是目标,“网址”是指运行数据库查询到列表中的记录Ajax页面):

function ajax(id,url) { 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("GET",url,false); 
xmlhttp.send(null); 
document.getElementById(id).innerHTML = parseScript(xmlhttp.responseText); 
} 
+0

try flush();与ob_flush();但Ajax无论如何都没有流式处理,你需要等待页面完成加载... – Marcin

+0

嗯有人设法得到我需要的东西,看看这个例子:http://ajaxify.com/run/streaming但我不没有办法... – Bee

本质您将需要创建一个带有服务器端代码的循环,输出一个Javascript函数调用来更新结果。这些请求必须在并行HTTP连接中进行。

更多详细信息,请访问:http://ajaxpatterns.org/HTTP_Streaming