>source

안녕하세요, 동료 문제 해결사. 생산적인 하루가 되시기 바랍니다. 저는 Laravel 8을 사용하여 전자 상거래 웹 사이트 프로젝트를 진행하고 있습니다. 지금까지 고객이 쇼핑을 할 수 있도록 '장바구니에 추가'를 만드는 지점에 도달했습니다. 다른 튜토리얼을 읽음으로써 나는 장바구니에 제품을 추가하고, 삭제도 편집하고 업데이트할 수 있다는 사실에 감사합니다. 그러나 페이지를 새로 고치지 않고 작동하기를 원합니다. 많은 튜토리얼이 제안한대로 Jquery를 사용하여 Ajax 요청을 생성했습니다. 내 code를 보여 주면 이해하고 도움이 될 것이라고 생각합니다.

여기에 '장바구니에 추가' 링크가 있습니다.

<li class="add_to_cart"><a href="javascript:void(0)" data-tippy="Add to cart" onclick="addtocart(<?php echo $product->productID ?>)" data-tippy-placement="top" data-tippy-arrow="true" data-tippy-inertia="true"> <span class="lnr lnr-cart"></span></a></li>

Ajax와 Jquery가 있습니다.

<script type="text/javascript">$.ajaxSetup({
    headers: {
             'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
          }
 });
function quickview(id) {
    $.get('/quickview/'+id, function (response) {
        if (response) {
            $("#id").html(response.id);
            $("#brand").html(response.brand);
            $("#productname").html(response.product_name);
            $("#price").html(response.price);
            $("#description").html(response.product_context);
            $("#img").attr('src',response.image);
        }
    })
}
function addtocart(id) {
    var _url= '/product/add-to-cart/'+id;
    $.ajax({
        url: _url,
        method: "GET",
        data: {
            _token: '{{ csrf_token() }}',
            id: id
        },
        success: function (response) {
            window.location.reload();
            //I think here is where I stuck,
        },
        error: function (data) {
            console.log('Error:', data);
        }
    });
}
</script>

여기가 내 경로입니다

Route::get('/product/add-to-cart/{id}', [ProductController::class, 'addToCart'])->name('add.to.cart')->middleware('loggedin');

여기 컨트롤러가 있습니다.

public function addToCart($id)
{
    $product= Product::findOrFail($id);
    $cart= session()->get('cart', []);
    if(isset($cart[$id])) {
        $cart[$id]['quantity']++;
    } else {
        $cart[$id]= [
                     "name"=> $product->product_name,
                     "quantity"=> 1,
                     "price"=> $product->price,
                     "maelezo"=> $product->product_context,
                     "image"=> $product->image
         ];
    }
    session()->put('cart', $cart);
    return response()->json(['success'=> true]);
    //return response()->json($cart);
    //return response()->json($cart);
}

안녕하세요, 귀하의 특정 문제가 무엇인지 설명할 수 있습니까? 현재 진행 보고서를 방금 제출했습니다.

RiggsFolly2021-10-04 14:12:03

좋은 code 들여쓰기는 code를 읽는 데 도움이 되며 더 중요한 것은 code를 디버그하는 데 도움이 됩니다. 자신의 이익을 위해 코딩 표준을 간단히 살펴보십시오. 몇 주/몇 달 안에 이 code를 수정하라는 요청을 받을 수 있으며 결국에는 저에게 감사할 것입니다.

RiggsFolly2021-10-04 14:12:30

감사 해요. 페이지를 새로 고치지 않고 장바구니에 제품을 추가하고 싶습니다. 따라서 문제는 장바구니를 추가, 삭제, 편집 및 업데이트할 때 페이지가 새로 고쳐지는 것입니다.

John2021-10-04 14:15:19

나는 당신이 preventDefault()를 추가해야 할 수도 있다고 생각합니다. 제출의 기본 작업을 수행하는 양식을 중지하려면

RiggsFolly2021-10-04 14:19:22

예, SPA 아키텍처에 대한 작업이 필요하고 서버에서 데이터를 요청하려면 ajax를 사용해야 합니다. UI와의 최상의 사용자 상호 작용을 얻으려면 더 많은 자바 스크립트를 구현해야한다는 것을 알아야합니다 ...

Francisco Núñez-Todo Poderoso2021-10-04 14:31:52
  • 이전 java : war 파일을 배포할 때 부두가 구성 파일을 읽지 않음
  • 다음 javascript : 문서 ID 및 다른 속성별 Firestore 쿼리