본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 쇼핑몰 - 43 Ajax 사용해 form태그 한방에 넘기기 (바로구매)

by 환풍 2023. 4. 13.
728x90
반응형

바로구매 하는 방법을 알아보자.


buy-mapper.xml

SHOP_BUY 테이블에서 buyCode는 자동으로 1씩 증가되고, memId도 저장되어있다.

따라서 buyPrice만 가져오면 된다.

그러기 위해선 수량데이터를 가져와야하고, 이 상품의 단가를 수량에 곱하면 가격이 나온다.

그러기 위해서는 이 쿼리도 함께 실행되어야하는데,  ITEM_CODE, BUY_CNT 만 들고오면 된다.

 

총 단가(buyPrice), 수량(buyCnt), 상품코드(itemCode) 이렇게 3개를 가지고 온다. 

item_detail.html

 

form태그에 감싸져있는 데이터는 ajax에서 가져올때 다들고 올 수 있다.

item_detail.js

// 자바스크립트로 폼 태그 선택
const form1 = document.querySelector('#buyForm');

// 제이쿼리로 폼 태그 선택
const form2 = $('#buyForm');

따라서 data: 에는 제이쿼리 형태로 $('#buyForm').serialize()를 사용해 폼 태그안에 있는 데이터를 전달해보았다.

BuyController 컨트롤러

컨트롤러에서 각 매개변수를 넣어주어 출력한 결과 아래와 같이 바로구매를 클릭했을때 데이터들이 조회된다.

 


Service

상품을 구매하는 쿼리에는 두개의 쿼리가 실행되는 것을 확인할 수 있다.


buy-mapper.xml

첫번째 쿼리

BuyController 컨트롤러

첫번째 쿼리 조건을 달성하기 위해 3개의 변수 buyCode, memId, buyPrice 변수 값을 buyVO에 넣어주었고,

이렇게 하면 첫번째 쿼리는 실행이 될 것이다.

buy-mapper.xml

두번째 쿼리

BuyController 컨트롤러

buyDetail의 빈값 4개를 모두 채워넣고, detailVO를 buyDetailList에 넣어주면 된다.

그리고, 상세 정보리스트를 담고 있는 리스트를 buyVO에 넣어줘야한다.

item_detail.js

이후 Ajax로 돌아와 상품을 구매했을때 location을 걸어주어 구매목록 페이지로 이동할 수 있게되는데,

personalMenu는 이전에 classappend를 사용해 만들어준 변수이므로 2를 넣어주었다.

 

이렇게 하면 성공적으로 구매한 결과가 구매내역에도 저장되어있는 것을 확인할 수 있다.

728x90
반응형

댓글