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

ajaxSend() Ajax 요청을 보내기 전에 호출되는 이벤트

by zoo10 2012. 6. 19.

.ajaxSend()

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

ajaxSend(handler(event, jqXHR, ajaxOptions) )Returns : jQuery

개요 : Ajax 요청을 보내기 전에 실행시킬 함수를 정의합니다. 이것은 Ajax 이벤트 입니다.

  • .ajaxSend( handler(event, jqXHR, ajaxOptions) )
  • handler(event, jqXHR, ajaxOptions) 실행될 함수

jQuery는 Ajax 요청을 보내기 전에 매번 ajaxSend 이벤트를 발생 시킵니다. 핸들러를 .ajaxSend() 함수에서 등록하면 실행할 수 있게 됩니다.

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

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

위와 같이 태그를 구성한 후 아래처럼 스크립트를 짤 수 있습니다.

$('.log').ajaxSend(function() {
  $(this).text('Triggered ajaxSend handler.');
});

그리고, Ajax를 실행시킬 jQuery 함수를 사용하면:

$('.trigger').click(function() {
  $('.result').load('ajax/test.html');
});

trigger 클래스를 가진 div 를 클릭하면 Ajax가 실행되고 요청이 완료되면 log 메시지가 log 클래스 div 태그에 나타나게 됩니다.

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

Ajax 요청이 완료가 되는것에 관계없이 모든 ajaxComplete 핸들러가 실행됩니다. 만약 요청들을 구분해서 제어하기 위해서는 핸들러에 파라미터를 줄 필요가 있습니다. 각각의 ajaxComplete 핸들러가 인자로 가진 event 객체, XMLHttpRequest 객체, ajaxOptions 들을 구분해서 실행되게 됩니다. 예를 들어, 특정한 URL을 상대로만 처리 이벤트의 콜백을 제한할 수 있는 것입니다.(오호~ 또 내용이 반복되기 시작하네요. ^^;;)

$('.log').ajaxSend(function(e, jqxhr, settings) {
  if (settings.url == 'ajax/test.html') {
    $(this).text('Triggered ajaxSend handler.');
  }
});

예 제  
Ajax 요청을 보내기 전에 메시지를 보여줍니다.

$("#msg").ajaxSend(function(evt, request, settings){
        $(this).append("<li>Starting request at " + settings.url + "</li>");
      });

 

요 함수는 쫌 쓸말할 것 같습니다. Ajax 호출 전에 무언가 처리할 것이 있으면 이 함수를 사용하면 되겠네요.

그럼 즐프하세요.

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