2012-10-09 3 views
0

웹 응용 프로그램이 있는데, 여기에서 일부 데이터를 가져 오기 위해 AJAX 호출을 만들고 있습니다. 데이터는 100 Kb에서 1 Mbs까지 다양합니다. 또한 백엔드에서 많은 처리 작업을 수행해야하기 때문에이 호출에는 많은 시간이 걸립니다.내 AJAX 통화 상태를 확인하는 방법은 무엇입니까?

1) 그것은 시간이 많이 걸립니다, 그래서 그들은하지 않도록 내가, 최종 사용자에게 AJAX 호출의 어떤 상태를 표시해야합니다 나는 2 개 기본적인 문제에

실행 해요 실망한. 초기 AJAX 호출의 진행 상황을 확인하기 위해 일정 간격 후에 AJAX 호출을 수행하는 방법이 있거나 생각할 수있는 방법이 있다면 생각하고 있었습니까?

2) 데이터를 받으면 자바 스크립트를 통해 페이지를 페인팅하기 때문에 브라우저 탭이 1 ~ 2 분 정도 걸리는 경우가 있습니다. 이 정지 시간을 줄이거 나 줄일 수있는 방법이 있습니까?

조언이 도움이 될 것입니다. 감사.

답변

0

좋아, 방법이있어. 실제로 iFrame을 페인팅하지 않고도 진행 상황을 확인할 수있었습니다. 간단히 세션 변수를 만들고 서버 측에서 값을 계속 업데이트합니다. 모든 초를 트리거하는 timeout 함수를 설정하고 AJAX 호출을 작성하여 세션 변수의 값을 확인했습니다. 나는 그것이 서버에 약간의 여분의로드를 만들고 있다는 것을 알고 있지만, 나는 다른 방법을 지금 쯤 알지 못한다. 더 이상의 제안을 환영합니다.

1
  1. 는 AJAX 내가 당신이를 수행하여 트릭을 제안 오히려 것, 그러나 귀하의 경우 난 당신이 최종 사용자에게 진행 상황을 보내려로 그 좋은 개최 같아요, 클라이언트 측에서 상태 이벤트를 제공합니다 서버에서 클라이언트로 진행 상황을 지속적으로 플러시 할 iframe을 사용하여 ajax 호출.

  2. 데이터가 크고 브라우저가 멈추는 명백한 그림을 그리기 시작하면 그림 1과 같이 setTimeout/setInterval을 사용하여 그림을 그리는 것이 좋습니다. 1 단계를 수행하면 플래시로 작업을 시작할 수도 있습니다. 마지막까지 전체 데이터를

편집을 기다리지 않고 서버에서 데이터 - iframe을 통해 진행률을 표시하는 방법

은 당신이 당신의 전체 내용과 아약스을하고있다 main.aspx이 있다고 할 수 있습니다

로 전화

또한 서버의 데이터를 제공하는 info.aspx도 있습니다.

info.aspx에는 6 단계가 있으며 모든 단일 단계를 사용자에게 알리고 싶습니다. 위의 경우에서

//Step 1 - do some thing 
Response.Write("<script>progress = '10'; progressText = 'Completed step 1'; "); 
Response.Write(" updateProgress(); </script>"); 
Response.Flush(); 

//Step 2 - do some thing 
Response.Write("<script>progress = '30'; progressText = 'Completed step 2'; "); 
Response.Write(" updateProgress(); </script>"); 
Response.Flush(); 

우리가 updateProgress() 자바 스크립트를 호출 진행 및 progressText 변수와를 업데이트의의 UpdateProgress은의 UpdateProgress() 함수는 처음에 플러시

function updateProgress() 
{ 
    //update parent window/container on the progress which will show an visual indicator of the progress 
} 

모양을

+0

iframe을 사용하여 진행 상황을 플러시하는 방법에 대한 몇 가지 예를 제공 할 수 있습니까? 나는 워크 스루가 절실히 필요합니다. –

+0

upvote 도움이 될 것입니다! ... 어쨌든 여기서 iframe을 사용하여 수행해야하는 작업이 있습니다. tradinional ajax를 사용하는 대신 정보를로드하려는 경우 웹 페이지에로드하려고 시도합니다 ... somewebpage.aspx.aspx 파일 또는 다른 유 (PHP 등)를 사용하여 지속적으로 json 또는 클라이언트 쪽 코드에서 선택할 수있는 일부 자바 스크립트 정보를 밀어 넣을 수 있습니다. –

+0

감사합니다. 해결책이 당신을 위해 작동하는지 저에게 알려주십시오, 나는 fiddled 그러나 서버 측에 더 많은 것이었을 것입니다. –

관련 문제