2013-10-16 2 views
1

는 아약스 호출을 사용하여 JQuery와 있습니다다시 게시 내 페이지에서

$.ajax(
{ 
    type: "POST", 
    url: "MyPage.aspx/myMethod", 
    data: parameters, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) 
    { 
     alert("Success"); 
    }, 
    error: function(e, textStatus, errorThrown) 
    { 
     alert("Error"); 
    }, 
    complete: function(s, e) 
    { 
     alert("it is done"); 
    } 

} 

모든 사용자가 페이지를 새로 고침 (또는 포스트 백을 발생) Ajax 호출이 전송되는 동안 경우를 제외하고 잘 작동을 (그러나 아직 반환되지 않음) 자동으로 "error :"메서드로 이동합니다.

이를 방지 할 수있는 방법이 있습니까? 아약스 호출 중 페이지를 새로 고친 경우 사용자에게 "오류"메시지를 표시하고 싶지 않습니다.

감사

+2

당신은 그냥 오류 코드 또는 무언가를 기반으로 무시할 수 있습니까? – thefourtheye

+2

또는 오류 콜백을 덜 분명하게 만드시겠습니까? 그것은 상관없이 일어날 것입니다. –

+0

AJAX 호출이 실행되는 이유는 무엇입니까? 모든 코드를 게시하십시오. –

답변

2

난 단지 크롬에서 문제를 다시 있지만; Internet Explorer 10에서 정상적으로 작동합니다.

캐시 된 요청 문제로 생각했지만 cache: false을 jQuery .ajax() 설정에서 설정했지만 아무 소용이 없습니다.

$.ajax({ 
    type: "POST", 
    url: "MyPage.aspx/myMethod", 
    data: parameters, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg){ 
     alert("Success"); 
    }, 
    error: function(e, textStatus, errorThrown){ 
     if (e.status === 0) { 
      alert("Error status 0."); 
     } 
     else { 
      alert("Error"); 
     } 
    }, 
    complete: function(s, e){ 
     alert("it is done"); 
    } 
} 

참고 : 당신은 가능성이 가장 높은 단지 오류 상태 0을 무시하기를 원할 것입니다, 그래서 alert("Error status 0.");를 제거하는 것은 매우 우아한 해결책은 아니지만 반환 된 특정 오류를 처리

가 작동하는 것 같다 ,하지만 디버깅 목적으로 거기에 놓았습니다.

UPDATE :

할 수 있습니다와 같은 트랩 다른 상태 코드 :

else if (jqXHR.status == 404) { 
    alert("Requested page not found. [HTTP 404]"); 
} 
else if (jqXHR.status == 500) { 
    alert("Internal Server Error [HTTP 500]."); 
} 
else if (exception === 'parsererror') { 
    alert("Requested JSON parse failed."); 
} 
else if (exception === 'timeout') { 
    alert("Time out error."); 
} 
else if (exception === 'abort') { 
    alert("AJAX request aborted.'); 
} 
+0

이 접근 방식이 마음에 듭니다! 하지만 다른 종류의 오류가 e.status === 0을 반환 할 수 있는지 궁금합니다./: – danbord