개발이야기/jQuery

[jQuery] 로딩 이미지 보여주기 / 숨기기 (Ajax 호출)

후린개발자 2022. 12. 6.
반응형

데이터를 조회하거나 처리할 때 사용자에게 알리기 위해 로딩 이미지를 사용합니다.
사용자에게 알리기 뿐만 아니라 중복으로 action 하지 못하게 하는 용도로도 사용할 수 있습니다.
로딩 이미지의 스타일을 작성합니다. 저는 화면 가운데 고정시켰고, 다른 action을 하지 못하게 z-index 속성을 추가해
맨 앞으로 노출시켜 줬습니다.
loading 변수를 통해 이미지를 숨기고 있다고 필요한 부분에 show를 통해 노출시키면 됩니다.
간단한 예제이니 확인해서 응용하시면 됩니다. (src 경로에 이미지 경로 작성하시면 됩니다.)

 

로딩 이미지

 

 

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<style type="text/css">
#loading {
	height: 100%;
	left: 0px;
	position: fixed;
	_position: absolute;
	top: 0px;
	width: 100%;
	filter: alpha(opacity = 50);
	-moz-opacity: 0.5;
	opacity: 0.5;
}
.loading {
	background-color: white;
	z-index: 999999;
}
#loading_img {
	position: absolute;
	top: 50%;
	left: 50%;
	height: 200px;
	margin-top: -75px; 
	margin-left: -75px; 
	z-index: 999999;
}
</style>
<script type="text/javascript">
var loading = "";
$(function() {
	loading = $('<div id="loading" class="loading"></div><img id="loading_img" alt="loading" src="" />').appendTo(document.body).hide();
	
	// 로딩바 적용
	loading.show();
	
	//로딩바를 위해 1.5초 뒤 ajax 실행
	timer = setTimeout(function(){
        jQuery.ajax({
			type : "POST",
			url : "ajax.php",
			data : $("#frm").serialize(),
			cache: false,
			success : function(data) {
				if(data == "0000"){
					alert("작업성공");
					// 로딩바 해제
					loading.hide();
				} else{
					alert("작업수행에 실패하였습니다.");
					// 로딩바 해제
					loading.hide();	
				}
			},
			error : function(e) {
				alert("작업수행에 실패하였습니다.");
				// 로딩바 해제
				loading.hide();
			}, timeout:100000
		});
    },1500);	
});
</script>
<body>
<form method="post" name="frm" id="frm" onsubmit="return false;" autocomplete="off"></form>
</body>
반응형

댓글

💲 추천 글