2011-10-05 3 views
0

현재 AJAX를 처음 배워서 Classic ASP와 섞었습니다.AJAX/ASP - 업데이트 진행 패널 - Response.Flush

ASP 페이지 (process.asp)를 호출하는 AJAX 스크립트가 있습니다. ASP 파일에는 1에서 1000 사이의 간단한 루프가 있습니다.이 루프는 내 사이트의 다른 곳에서 이미지 처리를 묘사하고 있으며 나중에 AJAX를 추가하려고합니다.

프로세스를 완료 잘 작동 순간

Response.Expires = -1 
i = 0 
Do Until i = 1000 
i = i + 1 
Loop 
Response.Write "Process complete" 

AJAX SCRIPT

function processItems() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
{ 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{ 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("notification").innerHTML=xmlhttp.responseText; 
} 
} 
xmlhttp.open("GET","processItems.asp",true); 
xmlhttp.send(); 
} 

ASP 페이지는 사용자 "전체 과정"에 메시지를 기록합니다. ..하지만 처리 할 항목이 많기 때문에 어떤 항목이 현재 처리되고 있는지 사용자에게 알리고 싶습니다. "1000의 가공 항목 17".

내가 필요 'Response.Flush를'이 작업을 수행 할 읽은

, 그래서 ...

나는 항목 번호를 표시, 내 ASP 스크립트의 루프 부분에 '.flush'를 사용할 수 (나는)? 그렇다면 다른 것이 필요합니까? 그렇지 않다면, 누군가 그것을 작동시키기 위해해야 ​​할 일을 설명 할 수 있습니까?

Response.Buffer = True 
Response.Expires = -1 
i = 0 
total = 1000 
Do Until i = total 
i = i + 1 
Response.Write "Processing Item "&i&" of "&total&"" 
Response.Flush 
Loop 

많은 감사를 사전

답변

1

그것의 불가능에 원하는 위치를 얻을 :

이 내가 무슨 생각입니다. 귀하의 아약스 호출이 완료되면 응답을 반환합니다, 만약 당신이 처리하는 10000 파일이 있다면 마지막 파일에서 처리가 끝난 후에 응답을 받게됩니다. 파일 처리를 필요로 얼마나 많은 얻을

  1. 한 아약스 전화 :

    당신은 동일한 기술을 사용하여, Reverse Ajax를 사용하여 (COMMET 아약스) 또는으로, 당신의 aproach을 변경할 수 있습니다, 나는 다음 당신에게 제안한다.

  2. 색인을 기반으로 파일을 처리하는 하나의 아약스 호출.
0

당신이 당신의 아약스 호출에 다음을 추가 할 수 있습니다 "처리 항목을"말하는 "처리 항목 XX"단지 메시지를 받고하지 않음으로써 함께 얻을 관리 할 수있는 경우 :

if (xmlhttp.readyState==1) 
{ 
document.getElementById("notification").innerHTML="Processing items"; 
} 

readyState가 = = 1은 (는) 전화를 걸기 전에 실행됩니다.