2012-11-07 5 views
0

나는 위대한 작품을 몇 가지 아약스 코드가 있습니다. 버튼을 클릭하면 서버에서 메시지를받을 때까지 이라는 문자가 성공할 때까지 2 초마다 doAjax 함수가 호출됩니다.jquery .ajax로 시간 초과 설정

내가 추가하고 싶은 것은 서버가 다운 된 경우를 대비 한 타임 아웃입니다. 그래서 타임 아웃과 에러 기능을 추가했습니다 :

$(document).on("click", ".play", function() { 
function doAjax(){ 
$.ajax({ 
    url: 'index.php', 
    success: function(data) { 
     if (data == 'Initializing...please wait') 
     { 
      $('#quote p').html(data).css({'border': '1px solid', 'margin': '10px 0px'}); 
      setTimeout(doAjax, 2000); 
     } 
    }, 
    error: function(jqXHR, strError) { 
     if(strError == 'timeout') 
     { 
      $('#quote p').html("Oops! Not found...").css({'border': '1px solid'}); 
     } 
    }, 
    timeout: 8000 
}); 
} 
doAjax(); 
}); 

코드는 여전히 작동하지만 8 초 후에는 타임 아웃이 발생하지 않습니다. 재귀를 제거하려고했지만 여전히 같은 문제가 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? ajaxSetup 방법이 설정

답변

0

그냥 추측, 당신의 아약스 호출에서 재귀를 제거하는 최초의 시도, 그리고 제한 시간이 필요에 따라 작동하는지 확인합니다.

또한 함수 호출 내에서 함수 정의가있는 이유는 무엇입니까? 온 - 클릭 호출 외부에서 함수를 정의한 다음 내부에서 호출해야합니다.

+0

매우 합리적인 질문입니다. doAjax 함수가 클릭 핸들러에 있지 않으면 어떤 이유로 든 작동 할 수 없습니다. 재귀 제거를 시도했지만 아무 것도 변경하지 않습니다. – Tom

+0

안녕하세요. 귀하의 기능은 클릭 한 통화 외에서 작동해야합니다. 나는 그것을 백만 번 해봤고 문제가되어서는 안된다. 이 문제도 수정하십시오. 이제 타임 아웃을 위해 다음과 같은 코드를 사용하여 콜백이 수행되는지 확인하십시오. error : function() {alert ("error")} – Greeso

+0

경고를 추가했으나 오류가 발생하지 않는 것 같습니다. function – Tom

0

시도 :

$.ajaxSetup({ 
    timeout: 10000, 
}) 
+0

도 작동하지 않았 음 – Tom