Ajax&Angularjs

 

 

예1)

@Controller
@RequiredArgsConstructor
public class CartController {
 
private final CartService cartService;
 
 
@PostMapping(value = "/cart")
@ResponseBody
public ResponseEntity order(@RequestBody @Valid CartItemDto cartItemDto, BindingResult bindingResult, Principal principal){
if(bindingResult.hasErrors()){
StringBuilder sb =new StringBuilder();
List<FieldError> fieldErrors =bindingResult.getFieldErrors();
for(FieldError fieldError :fieldErrors){
sb.append(fieldError.getDefaultMessage());
}
return new ResponseEntity<String>(sb.toString(), HttpStatus.BAD_REQUEST);
}
 
String email =principal.getName();
Long cartItemId;
 
try {
cartItemId =cartService.addCart(cartItemDto, email);
}catch (Exception e){
return new ResponseEntity<String>(e.getMessage(), HttpStatus.BAD_REQUEST);
}
 
return new ResponseEntity<Long>(cartItemId, HttpStatus.OK);
}
 
 
}

 

 

 

 

 

 

     $(document).ready(function(){

            calculateToalPrice();

            $("#count").change( function(){
                calculateToalPrice();
            });
        });

        function calculateToalPrice(){
            var count = $("#count").val();
            var price = $("#price").val();
            var totalPrice = price*count;
            $("#totalPrice").html(totalPrice + '원');
        }

        function order2(){
            var token = $("meta[name='_csrf']").attr("content");
            var header = $("meta[name='_csrf_header']").attr("content");

            var url = "/order";
            var paramData = {
                itemId : $("#itemId").val(),
                count : $("#count").val()
            };

            var param = JSON.stringify(paramData);

            $.ajax({
                url      : url,
                type     : "POST",
                contentType : "application/json",
                data     : param,
                beforeSend : function(xhr){
                    /* 데이터를 전송하기 전에 헤더에 csrf값을 설정 */
                    xhr.setRequestHeader(header, token);
                },
                dataType : "json",
                cache   : false,
                success  : function(result, status){
                    alert("주문이 완료 되었습니다.");
                    location.href='/';
                },
                error : function(jqXHR, status, error){

                    if(jqXHR.status == '401'){
                        alert('로그인 후 이용해주세요');
                        location.href='/members/login';
                    } else{
                        alert(jqXHR.responseText);
                    }

                }
            });
        }

        function order(){
            var token=$("meta[name='_csrf']").attr("content");
            var header=$("meta[name='_csrf_header']").attr("content");

            var url="/order";
            var paramData={
                itemId:$("#itemId").val(),
                count:$("#count").val()
            }

            var param=JSON.stringify(paramData);

            $.ajax({
                url:url,
                type:"POST",
                contentType:"application/json",
                data:param,
                beforeSend:function(xhr){
                    xhr.setRequestHeader(header, token);
                },
                dataType:"json",
                cache:false,
                success:function(result, status){
                    alert("주문이 완료 되었습니다.");
                    location.href="/";
                },
                error:function(jqXHR, status, error){

                    if(jqXHR.status=='401'){
                        alert('로그인 후 이용해 주세요.');
                        location.href="/memebrs/login";
                    }else{
                        alert(jqXHR.responseText);
                    }
                }

            });


        }


        function addCart(){
            var token = $("meta[name='_csrf']").attr("content");
            var header = $("meta[name='_csrf_header']").attr("content");

            var url = "/cart";
            var paramData = {
                itemId : $("#itemId").val(),
                count : $("#count").val()
            };

            var param = JSON.stringify(paramData);

            $.ajax({
                url      : url,
                type     : "POST",
                contentType : "application/json",
                data     : param,
                beforeSend : function(xhr){
                    /* 데이터를 전송하기 전에 헤더에 csrf값을 설정 */
                    xhr.setRequestHeader(header, token);
                },
                dataType : "json",
                cache   : false,
                success  : function(result, status){
                    alert("상품을 장바구니에 담았습니다.");
                    location.href='/';
                },
                error : function(jqXHR, status, error){

                    if(jqXHR.status == '401'){
                        alert('로그인 후 이용해주세요');
                        location.href='/members/login';
                    } else{
                        alert(jqXHR.responseText);
                    }

                }
            });
        }

 

 

 

예2)

   @ResponseBody
    @PostMapping(value = "/cart/orders")
    public ResponseEntity orderCartItem(@RequestBody CartOrderDto cartOrderDto, Principal principal){

        List<CartOrderDto> cartOrderDtoList=cartOrderDto.getCartOrderDtoList();

        if(cartOrderDtoList==null || cartOrderDtoList.size()==0){
            return new ResponseEntity<String>("주문할 상품을 선택해주세요.",HttpStatus.FORBIDDEN);
        }

        for(CartOrderDto cartOrder :cartOrderDtoList){
            if(!cartService.validateCartItem(cartOrder.getCartItemId(), principal.getName())){
                return  new ResponseEntity<String>("주문 권한이 없습니다.", HttpStatus.FORBIDDEN);
            }
        }

        Long orderId=cartService.orderCartItem(cartOrderDtoList, principal.getName());
        return new ResponseEntity<Long>(orderId, HttpStatus.OK);
    }

 

 function orders(){
         var token = $("meta[name='_csrf']").attr("content");
         var header = $("meta[name='_csrf_header']").attr("content");

         var url="/cart/orders";

         var dataList=new Array();
         var paramData=new Object();

         $("input[name=cartChkBox]:checked").each(function(){
                var cartItemId=$(this).val();
                console.log(" cartItemId :" +cartItemId);
                var data=new Object();
                data["cartItemId"]=cartItemId;
                dataList.push(data);


         });
         paramData['cartOrderDtoList']=dataList;
         var param =JSON.stringify(paramData);

            $.ajax({
                url:url,
                type:"POST",
                contentType:"application/json",
                data:param,
                beforeSend:function(xhr){
                    xhr.setRequestHeader(header, token);
                },
                dataType:"json",
                cache:false,
                success:function(result, status){
                    alert("주문이 완료 되었습니다.");
                    location.href="/orders";
                },
                error:function(jqXHR, status, error){
                    if(jqXHR.status=="401"){
                        alert("로그인후 이용해주세요.");
                    }else{
                        console.log(jqXHR);
                        alert(jqXHR.responseText);
                    }
                }

            });



    }

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 1  라이트

댓글 ( 4)

댓글 남기기

작성