본문 바로가기
프로그래밍/jQuery

ajaxError() Ajax 에러가 발생되면 호출

by zoo10 2012. 6. 19.

.ajaxError()

원문 링크 http://api.jquery.com/ajaxError/

ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) )Returns : jQuery

개요 : Ajax 요청에 대해 에러가 발생되면 호출될 핸들러를 등록합니다. 이것은 Ajax 이벤트 입니다.

  • .ajaxError( handler(event, jqXHR, ajaxSettings, thrownError) )
  • handler(event, jqXHR, ajaxSettings, thrownError) 호출될 함수

Ajax 요청이 에러가 났다면 jQuery는 ajaxError 이벤트를 발생시킵니다. 모든 핸들러는 .ajaxError() 함수 내에서 정의됙 실행됩니다.

이 함수가 동작하는 것을 보기위해 기본적인 Ajax 요청을 만들 수 있습니다.

<button class="trigger">Trigger</button>
<div class="result"></div>
<div class="log"></div>

이벤트 핸들러를 작성하면 :

$("div.log").ajaxError(function() {
  $(this).text( "Triggered ajaxError handler." );
});

자, jQuery 함수를 통해 Ajax를 실행해 보겠습니다.

$("button.trigger").click(function() {
  $("div.result").load( "ajax/missing.html" );
});

Ajax가 실행되면 해당 파일이 없기 때문에 에러가 발생하게 됩니다. 그리고 에러 메시지가 표시되게 됩니다.

Note: .ajaxComplete() 함수는 jQuery 객체에 의해 만들어지기 때문에, this 키워드는 콜백 함수내에서 선택되어진 요소를 지칭하게 됩니다.

Ajax 요청이 완료가 되는것에 관계없이 모든 ajaxError 핸들러가 실행됩니다. 만약 요청들을 구분해서 제어하기 위해서는 핸들러에 파라미터를 줄 필요가 있습니다. 각 요청마다 ajaxError 핸들러가 실행되는데, 인자들로 event 객체, jqXHR 겍체, 그리고 세팅에 관련된 settings 객체들을 가집니다. 만약 요청이 어떤 이유로 실패하게 되면 JavaScript는 예외(exception)를 발생시키고, 이 예외(exception) 객체는 4번째 인자로 넘어오게 됩니다. 예를 들어, 특정한 URL을 상대로만 처리 이벤트의 콜백을 제한할 수 있는 것입니다.

$( "div.log" ).ajaxError(function(e, jqxhr, settings, exception) {
  if ( settings.url == "ajax/missing.html" ) {
    $(this).text( "Triggered ajaxError handler." );
  }
});

예 제  
Ajax 요청이 실패할 경우 메시지를 보여줍니다.

$("#msg").ajaxError(function(event, request, settings){
  $(this).append("<li>Error requesting page " + settings.url + "</li>");
});

 

Ajax라서 미리보기가 없네요. 좀 아쉽긴 하지만 직접 페이지를 만드셔서 테스트를 하셔야 되는데... 그게 어렵다는게 함정이네요. APM 이라도 설치하셔서 간단하게 테스트 환경을 구성해 보세요. APM 에 대해 잘 모르시면 검색하심 됩니다. 걍 튀어나와요.

그럼 즐프하세요.

※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.