보라코딩

스프링부트 ajax 값 받아와서 결제내역 있으면 예약하기 버튼 눌리지 않게! 본문

코딩/Spring

스프링부트 ajax 값 받아와서 결제내역 있으면 예약하기 버튼 눌리지 않게!

new 보라 2023. 6. 15. 18:20


이제 ajax가 어렵지 않아요 :)

 

 






ajax에 사용하기 위해 class에 reserve를 넣음

<div class="mx-1">
<a class="btn btn-warning reserve"
style="border: none;">예약하기</a>
</div>

 
 
 
 


한 페이지에서 ajax 여러개 사용하면
모든 ajax에 이렇게 써놓으면 된다!

아래와 같이 써놓지 않으면 ajax 여러개가 동시에 실행되기도 함

async: false,

 
 

 

 

json 형식으로 ajax로 보내면

Controller에서 파라미터로 받는다.

 

<script>
/* 예약하기 (이미 결제 완료되면 불가능하게) */
var storeIdx = $("#storeIdx").val();

$(document).ready(function () {
$('.reserve').on('click', function () {
console.log("버튼 클릭 인식함!");
$.ajax({
url: "/store/payCheckAjax",
type: "POST",
data: {storeIdx: storeIdx},
contextType: "application/json; charset=UTF-8",
dataType: "json",
async: false,
success: function (data) {
console.log('payCheckAjax 성공 : ' + data.inicis);
console.log('payCheckAjax 성공 : ' + data.kakao);

if(data.inicis == 1){
alert("inicis결제내역이 있어요!");
return;
}
if(data.kakao == 1){
alert("kakao결제내역이 있어요!");
return;
}

//alert("결제내역이 없어 이동합니다");
location.href = "/booking/bookingInsert?storeIdx=" + storeIdx;

},
error: function (error) {
console.log(error.responseText);
alert("예약하기버튼 error");
}
});
});
});



</script>

 
 
 
 
 
 
 
Controller에서는 Map으로 보내면

ajax에서 json으로 받는다.

 

핵심은 @RequestMapping(.....)과 @ResponseBody

@RequestBody로 파라미터 받아와도 되고 생략해도 된다. (난 여기서 생략)

@RequestMapping(value = "/payCheckAjax" , produces = "application/json; charset=UTF-8", method = RequestMethod.POST)
@ResponseBody
public Map<String, Integer> payCheckAjax(HttpSession session, String storeIdx){

log.info("payCheckAjax Controller 도착");
MemberVO memberVO = (MemberVO) session.getAttribute("vo");
log.info("payCheckAjax memberVO 확인 : " + memberVO);
log.info("payCheckAjax storeIdx 확인 : " + storeIdx);


Map<String, Integer> resultMap = new HashMap<>();

resultMap.put("userIdx", memberVO.getUserIdx());
resultMap.put("storeIdx", Integer.parseInt(storeIdx));

log.info("payCheckAjax resultMap 확인 : " + resultMap);

// 확인
InicisVO inicisVO = paymentService.findInicis(memberVO.getUserIdx());
KakaoPayApprovalVO kakaoPayApprovalVO = paymentService.findKakao(memberVO.getUserIdx());

log.info("inicisVO 확인 : " + inicisVO);
log.info("kakaoPayApprovalVO 확인 : " + kakaoPayApprovalVO);

if (inicisVO != null){
log.info("inicisSuccess 값 확인");
resultMap.put("inicis", 1);

return resultMap;

} else if (kakaoPayApprovalVO != null){
log.info("mykakaoPaySuccess 값 확인");
resultMap.put("kakao", 1);
return resultMap;
}


return resultMap;
}