Ajax 데이터를 Controller에서 받는 몇 가지 방법을 소개해드립니다.
쇼핑몰 프로젝트에서 사용한 예시를 들어서 설명드리겠습니다.
<!-- 장바구니 상품 삭제 -->
<script>
function deleteCartItem(itemId) {
var cartItemForm = {
cartItemId : itemId
};
$.ajax({
url: "/cart",
type: 'DELETE',
data: cartItemForm,
<!-- 성공시 -->
success: function (result) {
alert("선택하신 상품이 삭제되었습니다.");
location.href="/cart"
},
<!-- 실패시 -->
error: function (jqXHR) {
alert(jqXHR.responseText);
location.href = "/cart";
}
})
}
</script>
//Controller
@DeleteMapping("/cart")
public ResponseEntity<String> deleteCartItem(@RequestParam Long cartItemId) {
log.info("itemId={}", cartItemId);
if (cartService.findCartItem(cartItemId) == null) {
return new ResponseEntity<String>("다시 시도해주세요.", HttpStatus.NOT_FOUND);
}
cartService.deleteCartItem(cartItemId);
return ResponseEntity.ok("success");
}
//Controller
@DeleteMapping("/cart")
public ResponseEntity<String> deleteCartItem(@ModelAttribute cartItemForm form) {
log.info("itemId={}", form.getCartItemId());
if (cartService.findCartItem(form.getCartItemId()) == null) {
return new ResponseEntity<String>("다시 시도해주세요.", HttpStatus.NOT_FOUND);
}
cartService.deleteCartItem(form.getCartItemId());
return ResponseEntity.ok("success");
}
@Getter
@Setter
public class cartItemForm {
private Long cartItemId;
}
<!-- 장바구니 상품 삭제 -->
<script>
function deleteCartItem(itemId) {
var cartItemForm = {
cartItemId : itemId
};
$.ajax({
url: "/cart",
type: 'DELETE',
data: JSON.stringify(cartItemForm),
contentType: 'application/json',
<!-- 성공시 -->
success: function (result) {
alert("선택하신 상품이 삭제되었습니다.");
location.href="/cart"
},
<!-- 실패시 -->
error: function (jqXHR) {
alert(jqXHR.responseText);
location.href = "/cart";
}
})
}
</script>
//Controller
@DeleteMapping("/cart")
public ResponseEntity<String> deleteCartItem(@RequestBody cartItemForm form) {
log.info("itemId={}", form.getCartItemId());
if (cartService.findCartItem(form.getCartItemId()) == null) {
return new ResponseEntity<String>("다시 시도해주세요.", HttpStatus.NOT_FOUND);
}
cartService.deleteCartItem(form.getCartItemId());
return ResponseEntity.ok("success");
}