2012-03-06 5 views
0

서버에 연결되어있는 Jquery + Ajax 페이지에서 데이터를 가져 와서 표시합니다. 이것은 항상 수행되고, 함수는 모든 작업을 완료하고 반복해서 수행하기 시작한 후에 스스로를 호출합니다. 그러나 komputer가 인터넷 연결을 끊으면 모든 것이 중단됩니다. 연결이 다시 돌아 오면 아무 일도 일어나지 않습니다. 다음은 자바 스크립트 코드입니다. 어떻게 연결이 다시 돌아온 후에도 계속 작동 할 수 있도록 어떻게 처리 할 수 ​​있습니까?연결이 끊어지면 자바 스크립트가 서버 측에 다시 연결되지 않습니다.

$(document).ready(function() { 
var a=1; 
var max='23'; 

function kiosk() 
{ 
    if(a<max) 
    { 
     $.post('engine.php', { index: a }, 
     function(result) 
     { 
      result = jQuery.parseJSON(result); 

      $('#main').css({'display':'none'}); 


      $('#div_city').html(result.dest); 
      $('#div_price').html(result.price); 
      $('#div_price_pre').html('From&nbsp;'); 
      $('#div_price_after').html('&nbsp;Euro'); 

       $('#main').fadeIn(2000).delay(3000).fadeOut(2000, function() 
        { 

          $('#main').hide; 
          a++; 
          kiosk(); 


        }); 

     }); 
    } 
    else 
    { 
     a=1; 
     kiosk(); 
    } 

} 
kiosk(); 
}); 

답변

3

차라리

$ 아약스 (사용 .post $를 사용하는 것보다 제안 {유형 : "POST", 성공 : 기능 1() 실패 : 기능 2를()}. FUNCTION2에서

을 (..) 당신이 타임 아웃 후 다시 koisk 호출 할 수 있고, succces 당신이 지금 만든 함수가 될 것이다

이 링크를 당신이 아약스 기능 jQuery Ajax error handling, show custom exception messages

예 : 코드를 이해하는 데 도움이 니펫을 :

function kiosk() 
{ 
if(a<max) 
{ 
    $.ajax({type : "POST" , url : 'engine.php',data: { index: a }, 
    success : function(result) 
    { 
     result = jQuery.parseJSON(result); 

     $('#main').css({'display':'none'}); 


     $('#div_city').html(result.dest); 
     $('#div_price').html(result.price); 
     $('#div_price_pre').html('From&nbsp;'); 
     $('#div_price_after').html('&nbsp;Euro'); 

      $('#main').fadeIn(2000).delay(3000).fadeOut(2000, function() 
       { 

         $('#main').hide; 
         a++; 
         kiosk(); 


       }); 

    },error : function (xhr, ajaxOptions, thrownError){ setTimeout(200,kiosk()) } 

    }); 
} 
else 
{ 
    a=1; 
    kiosk(); 
} 

} kiosk(); }); '

+0

나는 그것이 옳다고 생각하지만 문법 오류 – David

+0

이 내 잘못이었습니다. 모든 것이 효과적이다. 감사!!! – David

-1

스크립트가 예외를 throw하기 때문에 파손되었습니다. try 및 catch 블록에 코드를 추가 할 수 있으며 오류가 있어도 계속 시도 할 수 있습니다.

try { 
    result = jQuery.parseJSON(result); 
    // do your work 
} catch { 
    // call function again 
} 

jquery ajax를 사용하면 onerror 이벤트가 발생합니다.

0

jQuery.post을 사용하면 성공시에만 실행되는 콜백을 전달합니다. 다른 콜백을 가진 jQuery.ajax을 사용해야합니다. complete, successerror 콜백을 사용하는 documentation을 참조하십시오.

statusCode을 사용하여 특정 HTTP 코드를 사용자 지정 함수에 매핑 할 수도 있습니다.

관련 문제