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 디버깅 사용하고 있습니다.
@Joe 코드가 아약스 콜백에 있어야합니다. 문제가 아닌 것 같습니다. –
Ajax 호출의 결과를 확인하여 기대 한 바를 확인 했습니까? 'emailDespatchNotification();'을 호출하는 줄에 중단 점을 넣고 이벤트 객체를 확인하는 것이 도움이 될 수 있습니다. –
ajax 결과를 확인하고 JSONLint를 통해 실행 했으므로 샘플 결과를 제 질문에 추가했습니다. – TheBeest