본문 바로가기
Stack Overflow/스프링

[스프링] jsp 버튼 클릭 시 AJAX 여러번 호출 막기 (1번만 눌러지게 하기)

by Lich King 2022. 2. 10.

스프링 JSP에서 코딩을 하다가 버튼을 클릭하면 한번만 실행을 해줘야 할 때가 있다.
그런데 네트워크 응답을 받기 전에 버튼을 여러번 누르면 여러번 이벤트가 요청된다.
별 중요하지 않은 것이라면 상관이 없는데, 파일이 없로드 된다거나 중요 사항이 한번만 신청되어야 하는데 여러번 신청되면 난감하다.
버튼을 클릭했을 때 ajax가 한 번만 호출되는 방법은 구글링을 해봤지만 결국은 2가지인 듯 하다.

1. 요약
1.1 alert창 띄워서 확인 버튼 누르게 하기.
1.2 하기 소스 따라하기

 

2. 소스코드

var ajax_cnt = 0;
var current_ajax_num = ajax_cnt;
<script type="text/javascript">
function fnSave() {
	
	$("#form").ajaxSubmit({
		type : "POST",
		dataType : "json",
		url : "URL",
		beforeSend:function(request){
			ajax_cnt = ajax_cnt + 1;
		},
		success : function(data) {
			if(data.rtn != "OK"){
				return true;
			}
			if(current_ajax_num == ajax_cnt - 1) {
				// 리턴 넣으면 안됨	
			}
		}, error : function(request, status, msg) {
			ajax_cnt = 0;
			return false;
		}
	 }); 
}
</script>

나도 여러번 시행착오를 했고, 구글링을 다 해서 된다는 소스 적용해도 안되는게 90%였다.
이 소스는 어느정도 검증이 되었다고 생각하고, 여러번 버튼을 눌러도 한번만 신청된다.
이거 말고도 ajax를 동기식으로 처리하는 방법이 있을 것이다.
근데 해보니까 이거만한게 없는 것 같다. 
개발은 시간이 금이지 않은가? 나중에 나도 필요하면 쓸라구 여기에 공유한다.

댓글