보라코딩
스프링부트 ajax 값 받아와서 결제내역 있으면 예약하기 버튼 눌리지 않게! 본문
이제 ajax가 어렵지 않아요 :)
ajax에 사용하기 위해 class에 reserve를 넣음
<div class="mx-1">
<a class="btn btn-warning reserve"
style="border: none;">예약하기</a>
</div>
<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>
/* 예약하기 (이미 결제 완료되면 불가능하게) */
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;
}
@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;
}
'코딩 > Spring' 카테고리의 다른 글
이쁘고 쉬운 alert창 사용하자! SweatAlert (0) | 2023.06.15 |
---|---|
Day117_230615_Git 팀프로젝트 공부 (0) | 2023.06.15 |
form 형식일때 modal 사용하기 (0) | 2023.06.14 |
클라우드로 공용 DB 만들기 (0) | 2023.06.14 |
주문번호 생성 메서드 (0) | 2023.06.11 |