2010-04-14 1 views
3

AJAX 호출 진행 상황을 사용자에게 알려주는 진행률 표시 줄을 만들려고합니다.AJAX 호출 (asp.net)의 실시간 진행

즉각적인 생각은 AJAX 호출을 시작하여 서버에서 스레드를 시작하고 AJAX 시작을 허용하고 스레드가 업데이트를 다시 사용자에게 보내도록 허용하는 것입니다.

간결하게하기 위해 실제 진행률 막대 기능을 무시하십시오. (멋진 JSB 막대 중 하나를 구현하려고 생각하고 있습니다.)하지만 스레드에서 업데이트를 얻을 수 있다면 간단한 JS 진행 표시 줄은 간단해진다;))

누군가가 나를 도와 줄 수 있다면, 이것을 달성하는 방법에 대한 몇 가지 지침이 필요 하겠는가? ;)

답변

2

문제의 핵심은 서버에서 완료된 작업의 %를 얻는 것입니다. 유일한 방법은 매 x 초마다 서버를 폴링하는 것입니다. 몇 가지 접근 방식이 있습니다.

  1. ajax를 사용하여 httphandler (sync 또는 async) 호출을 시작합니다.
  2. [폴링] ASP.NET timer control을 사용하여 x 초마다 업데이트 패널을 새로 고칩니다. 폴링

또는

http://encosia.com/2007/07/25/display-data-updates-in-real-time-with-ajax/

또는 사용 JQuery와.

't'간격으로 서버를 폴링하고 상태를 가져옵니다. 이를 위해 't'간격으로 함수를 호출해야 HTTPHandler를 호출하여 AJAX 상태를 가져올 수 있습니다.

$(function() { 
    setInterval(update, 't'); 
}); 

function updateStatus() { 
    $.ajax({ type: "POST", url: "GetStatusHandler.ashx", 
     contentType: "text/html; charset=utf-8", 
     dataType: "html", 
     success: function(data) { UpdateStatus - Update some progressbar plugin } 
     }); 
} 

따라서 상태를 얻기 위해 다른 프로세스를 시작하는 두 개의 httphandler가 있습니다.

당신은 이것들을 연구하고 당신에게 더 맞는 것을 볼 수 있습니다.