2013-06-05 9 views
0

내 Ajax 요청이로드되는 동안 진행률 표시를 얻고 싶습니다. 이것은 내 ftp-backup-system 코드 스 니펫입니다. backup.php - 일부 단계를 실행 중이고 현재 단계를 $ _SESSION [ "step"]에 저장 중입니다. getStatus.php - 보내는 중 $ _SESSION [ "step "] jquery로 돌아 가기Ajax 및 getJSON 요청의 비동기 호출

문제 : 코드는 먼저 ajax 요청을 backup.php로 호출하고 완료되면 getStatus.php로 getJSON을 호출합니다. 누군가 내가 뭘 잘못하고 있는지 알아?

$.ajax({ 
    type: "POST", 
    url: "backup.php", 
    data: $("#form").serialize() 
}); 

(function checkStatus() { 
    $.getJSON("getStatus.php", function(data) { 
     alert("I am called when backup.php is finished. Why?"); 
     # do some stuff, for example: 
     # data[0] = true/false #finished or not 
     # data[1] = $_SESSION["step"] 
     if (data[0]) 
     setInterval(function(){ checkStatus(); }, 500); 
     # progressbar-refresh to data[1] 
    }); 
})(); 

미리 감사드립니다.

I가 backup.php 및 getStatus.php PHP에서 세션을 사용하여이 서로 차단된다

+0

(function checkStatus() {console.log ('called'); ...}) 콘솔에서 'called'는 이전 Ajax 요청이 완료된 후에도 계속 인쇄됩니까? –

+0

각 단계에서 당신은 새로운 단계를 만들 때'setInterval (...) '을 사용하여 각 단계마다 새로운 구간을 만듭니다 ... -'setTimeout (checkStatus, 500)'를 대신 사용하십시오 – Andreas

+0

진행 상황을 표시하고 싶습니다 바 모두 끝날 때까지 바? – pvnarula

답변

0

과제를 해결한다. 지금 COOKIE와 일하기. 또는 JSON 파일을 사용하여 단계를 저장할 수도 있습니다 ... 또한 변경됨 setInterval (function() {checkStatus();}, 500); ~ window.setTimeout (checkStatus, 500); 은 0.5 초마다 getJSON 요청을 호출합니다.

도움 주셔서 감사합니다.

+0

COOKIES에 몇 가지 문제가있어서 JSON 파일을 사용하여 상태를 저장하기로 결정했습니다. 이제 문제없이 제대로 작동합니다! :) – NePheus