Stack Overflow/스프링
[스프링] jsp 버튼 클릭 시 AJAX 여러번 호출 막기 (1번만 눌러지게 하기)
Lich King
2022. 2. 10. 08:00
스프링 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를 동기식으로 처리하는 방법이 있을 것이다.
근데 해보니까 이거만한게 없는 것 같다.
개발은 시간이 금이지 않은가? 나중에 나도 필요하면 쓸라구 여기에 공유한다.