2013-07-23 2 views
0

jQuery를 사용하여 이메일을 보내는 PHP 파일을 호출하는 재귀 함수를 작성하려고합니다. 전자 메일 서버는 한 번에 10 개의 전자 메일을 보내고 JS는 data가 끝날 때까지 GET을 계속 실행합니다. 완료 == true. 다음과 같이jQuery 결과를 기다리는 재귀 호출 받기

내 코드는 다음과 같이

function emailDespatchNotification() { 
    $.get('email.php', function(event) { 
    if (event.action.status == 'OK') { 
     if (event.data.Finished != true) { 
     emailDespatchNotification(); 
     } 
    } 
    }); 
} 

json으로 결과는 : 내가 한 GET을 보내기에 원하는 emailDespatchNotification()이 코드가 동작 처음이라고

{ 
"log": {"SQL":{"0":"SELECT ...","1":"INSERT INTO ..."},"0":"Cache cleared","Page":"email.php","Script_Time":3.4495}, 
"data": {"Finished":false}, 
"action": {"status":"OK"}, 
"readable": {} 
} 

서버에 전달하지만 결과 (data.Finished = false 포함)가 반환되면 JS는 중지하거나 브라우저에서 오류를보고 할 때까지 계속 GET 요청을 서버에 보냅니다.

emailDespatchNotification()이 GET에서 값을 반환하고 나면 호출되어야하므로 계속해서 호출되는 이유를 알지 못합니다. 나는 명명 된 함수에 전체 GET을 중첩 시키려고 시도했다. 대신 emailDespatchNotification()을 호출했지만 효과가 없었다. 목록을 사용하기 전에 이런 종류의 문제가 발생했지만 목록을 적절하지 않도록 서버를 호출해야하는 횟수를 알지 못합니다. jQuery 1.8.3 및 Firebug 디버깅 사용하고 있습니다.

+0

@Joe 코드가 아약스 콜백에 있어야합니다. 문제가 아닌 것 같습니다. –

+0

Ajax 호출의 결과를 확인하여 기대 한 바를 확인 했습니까? 'emailDespatchNotification();'을 호출하는 줄에 중단 점을 넣고 이벤트 객체를 확인하는 것이 도움이 될 수 있습니다. –

+0

ajax 결과를 확인하고 JSONLint를 통해 실행 했으므로 샘플 결과를 제 질문에 추가했습니다. – TheBeest

답변

0

캐시 제어가 no-store로 설정되었지만 캐시가 결과를 캐싱하고 있었지만 GET 함수에 시드로 추가하여 문제가 해결되었다고 생각합니다. 내가 보장

var seed = new Date()/1; 
$.get('beta/email.php', {seed:seed}, function(event) { 

이 방법은 내가 페이지의 라이브 버전을 내 코드는 잘 실행 다음과 같이

적응 된 코드입니다.

@Jason P 모든 도움에 감사드립니다!