2010-03-27 1 views
2

테이블에서 가져온 레코드 목록을 내 페이지에 표시해야합니다. Ajax는 잘 동작한다 (데이터베이스를 쿼리하고 메인 페이지에 모든 데이터를 넣는다.)하지만 레코드가 많으면 (500+라고 말하면) 데이터가 완전히로드 될 때까지 멈추고 페이지로 다시 보내진다. 올바르게 표시됩니다.ajax 페이지를 처리하는 동안 화면에 데이터를 출력/플러시 할 수 있습니까?

완료 될 때까지 기다릴 필요없이 페이지를 가져 오는 동안 페이지에 레코드를 표시하고 싶습니다. 나는 flush()로 시도하고있다. 원격 (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를 통해 동일한 페이지를 호출하면 모든 데이터가 중단되어 즉시 전송됩니다.

아이디어가 있으십니까? 기본적으로

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

플러시 시도(); with ob_flush(); 하지만 Ajax는 아무렇게나 스트리밍을하지 않으므로 페이지로드가 끝날 때까지 기다려야합니다. – Marcin

+0

흠, 누군가가 내가 원하는 것을 얻을 수 있었지만이 예제를 살펴보십시오. http://ajaxify.com/run/streaming 속임수를 쓰지 마라. – Bee

답변

3

:

내가 아약스 콘텐츠를하기 위해 사용하는 기능입니다 ('ID는'대상은 'URL'는 레코드를 나열하는 데이터베이스 쿼리를 실행하는 아약스 페이지를 참조) 결과를 업데이트하기 위해 Javascript 함수 호출을 출력하는 서버 측 코드로 루프를 작성해야합니다. 이러한 요청은 병렬 HTTP 연결로 이루어져야합니다.

세부 사항은 더 여기에서 볼 수 있습니다 : http://ajaxpatterns.org/HTTP_Streaming

관련 문제