원문 링크 http://api.jquery.com/jQuery.ajaxPrefilter/
개요 : Ajax 요청을 보내기 전이나 $.ajax() 함수에 의해 호출되기 전에 Ajax 옵션들을 수정하거나 조작합니다.
- jQuery.ajaxPrefilter( [dataTypes], handler(options, originalOptions, jqXHR) )
- dataTypes 공백 문자열로 구분된 dataType 문자열, 생략가능
- handler(options, originalOptions, jqXHR) 향후 아약스 요청에 대해 기본값을 설정하는 핸들러.
$.ajaxPrefilter()
함수의 기본적인 사용법은 아래와 같습니다.
$.ajaxPrefilter( function( options, originalOptions, jqXHR ) { // Modify options, control originalOptions, store jqXHR, etc });
각 인자들을 설명하면 :
-
options
: request 요청 옵션 값들 -
originalOptions
: ajax 함수에 쓰일 수정되지 않은 옵션값들(흠, 정체가 궁금하군요;;;) -
jqXHR
: jqXHR 겍체 ( jquery XMLHttpRequest )
Prefilters 는 커스텀 옵션을 사용해야 할 때 알맞습니다. 예를 들어 설명하면, 아래 코드처럼 abortOnRetry
옵션이 true
로 세팅되어 있다면 $.ajax()
함수는 URL에 대한 요청을 취소하게 되는 것입니다.
var currentRequests = {}; $.ajaxPrefilter(function( options, originalOptions, jqXHR ) { if ( options.abortOnRetry ) { if ( currentRequests[ options.url ] ) { currentRequests[ options.url ].abort(); } currentRequests[ options.url ] = jqXHR; } });
options 객체의 abortOnRetry 라는 속성은 사용자가 만든 것이고, 그 값이 true 라면 Ajax의 기본 속성인 url 에 대한 실행을 abort 하라는 예제인 것(?) 입니다. ㅎㅎ;;
또한 Prefilters 는 이미 작성된 옵션을 수정할 수도 있습니다. 이것도 예제가 있습니다.
$.ajaxPrefilter( function( options ) { if ( options.crossDomain ) { options.url = "http://mydomain.net/proxy/" + encodeURIComponent( options.url ); options.crossDomain = false; } });
옵션값인 dataTypes
인자를 사용하다면, prefilter는 dataType 형태로 요청을 진행합니다. 예제를 보시면, JSON 과 script 로 prefilter 를 하고 있는 모습입니다.
$.ajaxPrefilter( "json script", function( options, originalOptions, jqXHR ) { // Modify options, control originalOptions, store jqXHR, etc });
$.ajaxPrefilter()
함수는 아래처럼 isActuallyScript()
라는 사용자가 만든 함수의 어떤 특정한 결과에 의해서 "script" dataType 을 요청하 수도 있습니다.
$.ajaxPrefilter(function( options ) { if ( isActuallyScript( options.url ) ) { return "script"; } });
이 함수를 보긴 했지만 거의 모든 부분에 대해 이해가 되지 않네요. 번역의 문제가 아닌 함수의 효용성이나 사용법 등이 익숙치 않은게 가장 크네요. 흠... 아무래도 Ajax 부분은 나중에 재수정 작업을 좀 해야 겠습니다. 사실 이 함수를 얼마나 쓸지는 모르겠네요. Ajax 사용은 기본걱으로 모든 상황을 정해놓고 로직을 구현하는 것이라서 로직 중간에 옵션값을 바꿀일이 많을지도 의문이구요. 어쨌든 어렵기만 디게 어렵고 별로;;;; ㅎㅎㅎㅎㅎㅎ
그럼 즐프하세요.
※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.
'프로그래밍 > jQuery' 카테고리의 다른 글
ajaxStop() Ajax 요청이 완료되면 호출 (0) | 2012.06.19 |
---|---|
ajaxStart() Ajax 요청이 시작될 때 호출되는 함수 (0) | 2012.06.19 |
jQuery.ajaxSetup() Ajax 옵션 값을 설정하는 함수 (0) | 2012.06.19 |
ajaxSend() Ajax 요청을 보내기 전에 호출되는 이벤트 (0) | 2012.06.19 |
ajaxError() Ajax 에러가 발생되면 호출 (0) | 2012.06.19 |
ajaxComplete() Ajax가 완료되면 호출 (4) | 2012.06.15 |
jQuery.ajax() HTTP 비동기 데이터 교환 (0) | 2012.06.12 |
toggle(), 요소 표시 또는 숨기기, 토글하기 (0) | 2012.05.08 |