2010-04-15 3 views
0

사용자가 여러 파일을 한 번에 업로드 할 수 있도록 jQuery 함수를 작성하려고합니다. 다음은 업로드 프로세스 진행 상황에 대한 피드백을 사용자에게 제공하기 위해 생각한 기능입니다.사용자에게 몇 가지 피드백을 제공하면서 많은 파일을 업로드하는 jQuery 재귀 함수

function uploadFiles(numbersOfFiles, start) { 
    $("#info").html(start + " files uploaded"); 
    $.post('upload.php', { 
     start: start 
    }, function (data) { 
     start += 5; 
     if (start < numbersOfFiles) { 
     uploadFiles(numbersOfFiles, start); 
     } else { 
     $("#info").html("All files have been uploaded"); 
     } 
    }); 
} 

이 함수는 5 개의 파일을 업로드하기 위해 PHP 스크립트를 호출 한 다음 업로드 할 파일이 더 많으면 스크립트를 다시 호출합니다. 전체 프로세스가 작동합니다. 나는 100 개의 파일로 시도했다. 유일한 일은 #info div 업데이트입니다. div가 처음으로 업데이트 된 다음 "모든 파일이 업로드되었습니다"만 표시되도록 다시 업데이트됩니다. 따라서 업로드 프로세스에 대한 사용자의 피드백은 없습니다. 이유를 이해할 수 없습니다 ... 도움이 필요하십니까?

+0

문제를 해결 했습니까? – dejavu

답변

0

$.post은 비동기 적으로 실행됩니다. 의미 jQuery는 POST가 완료되기 전에 POST가 완료 될 때까지 기다리지 않습니다 $.post

jQuery는 모든 POST를 매우 빠르게 실행하므로 실제 POST가 여전히 "모든 파일이 업로드되었습니다"라는 메시지가 나타납니다. 백그라운드에서 응답을 기다리고 있습니다.

uploadFiles을 반복적으로 호출하려면 complete:을 호출하십시오.

+0

checcco는이 대답을 무시하고 시간 낭비하지 않습니다. 나는 조금 졸 렸거나 아마도 술 취했다. –

+0

$ .post는 성공을 위해서만 콜백 함수를 허용합니다. 완성 된 콜백 함수에는 무엇을 사용해야합니까? – checcco

+0

내가 말했듯이 .. 내가 당신의 질문에 대답 할 때 나는 졸거나 중얼 거렸다. 귀하의 jquery와 아무 문제가 볼, 그래서 당신의 html 마크 업이어야합니다 같아요. 당신은뿐만 아니라 귀하의 HTML을 게시 할 수 있습니까? 파이어 폭스와 IE에서 모두 테스트 했습니까? 마크 업에서 어리석은 실수가 될 수 있습니다. –

관련 문제