본문 바로가기
💻 1. 웹개발_Front end/1-7 Ajax

[Ajax] 17. Ajax 전역 이벤트 함수

by 달님🌙 2021. 10. 6.
반응형

 

1. 이론 - Ajax 전역 이벤트 함수

- Ajax 전역 이벤트 함수는 콜백에서 사용되는 공통적인 코드를 관리하고 사용하도록 구성

 

2. Ajax 전역 이벤트 함수의 종류

1) ajaxStart(handler) : 처리중인 ajax 요청이 없는 상태에서 처음 ajax 요청이 일어날 때 발생되는 이벤트.

이미 ajax 요청이 진행중이면 실행되지 않음

ex) $(document).ajaxStart(function() {
		console.log("ajaxStart");
	});

 

2) ajaxSend(handler) : 각각의 ajax 요청이 전송되기 전에 발생되는 이벤트

                             다른 ajax요청이 진행중인 상태에서도 실행됨

ex) $(document).ajaxSend(function(event, xhr, options) {
		console.log("ajaxSend");
	});
    event : event 객체
    optios : ajax 호출 시 설정한 설정 값들

 

3) ajaxSuccess(handler) : ajax 요청이 성공일 때 실행되는 이벤트

ex) $(document).ajaxSuccess(function(event, xhr, options, data) {
		console.log("ajaxSuccess");
	});
    data : 서버로부터 응답받은 데이터

 

4) ajaxError(handler) : ajax 요청이 실패했을 때 발생되는 이벤트

ex) $(document).ajaxError(function(event, xhr, options, data) {
		console.log("ajaxError");
	});
    error : 발생된 오류 메시지

 

5) ajaxComplete(handler) : ajax 요청이 완료됐을 때 발생되는 이벤트, 성공/실패 여부와 관계없이 실행

ex) $(document).ajaxError(function(event, xhr, options) {
		console.log("ajaxComplete");
	});

 

6) ajaxStop(handler) : 처리중인 ajax요청이 모두 완료된 상태가 되었을 때 발생되는 이벤트

ex) $(document).ajaxStop(function() {
		console.log("ajaxStop");
	});

 

3. Ajax 전역 이벤트 함수와 Ajax 로컬 콜백 함수의 시점

  Ajax 요청이 성공일 때 : 

전역 이벤트 함수 ajaxStart  ------->    ajaxSend    ------->   ajaxSuccess  ------->   ajaxComplete   -------> ajaxStop

로컬 콜백 함수	          beforeSend  ------->    success      ------->    complete    ------->

 

  Ajax 요청이 실패일 때 :

전역 이벤트 함수 ajaxStart  ------->    ajaxSend    ------->   ajaxError  ------->   ajaxComplete   -------> ajaxStop

로컬 콜백 함수	          beforeSend  ------->    error      ------->    complete    ------->

 

 

4. 실습 - Ajax_GlobalEvent

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="js/jquery-3.6.0.min.js"></script>
<title>Ajax 사용 - GET방식</title>
</head>
<body>
	<button type="button" onclick="reqList();">조회</button>
	<button type="button" onclick="delList();">삭제</button>
	<p id="resp"></p>
	<script>
		//Ajax 전역 이벤트 함수 등록
		$(document).ready(function() {
			$(document).ajaxStart(function() {
				console.log("ajaxStart");
			}).ajaxStop(function() {
				console.log("ajaxStop");
			}).ajaxSend(function() {
				console.log("ajaxSend");
			}).ajaxSuccess(function() {
				console.log("ajaxSuccess");
			}).ajaxComplete(function() {
				console.log("ajaxComplete");
			});
		});
	
		function reqList() {
			$.get({
				url : "/contact/list.do",
				beforeSend : function() {
					console.log("Ajax-1 beforeSend : list.do");
				},
				success : function() {
					console.log("Ajax-1 success : list.do");
				},
				complete : function() {
					console.log("Ajax-1 complete : list.do");
				}
			});
			
			$.get({
				url : "/contact/list_long.do",
				beforeSend : function() {
					console.log("Ajax-2 beforeSend : list_long.do");
				},
				success : function() {
					console.log("Ajax-2 success : list_long.do");
				},
				complete : function() {
					console.log("Ajax-2 complete : list_long.do");
				}
			});
		}
		
		function delList() {
			//p요소 초기화
			$("#resp").html("");
		}
	</script>
</body>
</html>

 

 

반응형

댓글