функция корзины не работает должным образом с Ajax в Laravel - PullRequest
0 голосов
/ 10 июня 2019

я написал добавить в корзину функцию с ajax на laravel.в моем коде я хочу получить значения в переменную сеанса и хочу передать другое значение сеанса функции.

public function getCart(Request $request)
{
    $total_price = 0;
    $total_item = 0;
    //$shop = $request->shopping_cart;
    //Session::set('shopping_cart', $shopping_cart);
    $cart = session()->get('cart');
    session()->put('cart', $cart);

    $output = '
        <div class="table-responsive border-top" id="order_table">
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Product</th>
                    <th>price</th>
                    <th>Quantity</th>
                    <th>Total</th>
                    <th>Action</th>
                </tr>
            </thead>
            <tbody>';
    //dd($shopping_cart);
    if(!empty($cart))
    {
        foreach($cart as $keys => $values){
            $output .= '
            <tr>
                <td>'.$values["product_name"].'</td>
                <td><span>Rs.'.$values["product_price"].'</span></td>
                <td>'.$values["product_quantity"].'</td>
                <td><span>Rs.'.number_format($values["product_quantity"] * $values["product_price"], 2).'</span></td>
                <td><button class="btn btn-danger btn-sm text-white" data-toggle="tooltip" data-original-title="Delete" id="'.$values["product_id"].'"><i class="fa fa-trash-o"></i></button></td>
            </tr>
            ';
        }
    }
    else{
        $output .= '
            <tr>
                <td colspan="5" align="center">
                    Your cart is empty
                </td>    
            </tr>
        ';
    }        

    $output .= '
        </tbody>
            </table>
        </div>
        ';

    echo $output;    
}

это мои элементы show cart в табличной функции.и это мои действия, выполняющие функцию для добавления корзины.

public function cartAdd()
{
    if(request()->action){

        $cart = session()->get('cart');

        if(request()->action == "add"){
            $product_id = request()->product_id;
            $product_name = request()->product_name;
            $product_price = request()->product_price;
            //$shopping_cart = $request->shopping_cart;

            for($count = 0; $count > count($product_id); $count++){

                if(in_array($product_id[$count], $cart_product_id))
                {
                     $cart[$product_id[$count]]["product_quantity"]++; 
                     session()->put('cart', $cart);

                }
                else{
                    $item_array = array(
                        'product_id' => $product_id[$count],
                        'product_name' => $product_name[$count],
                        'product_price' => $product_price[$count],
                        'product_quantity' => 1
                    );

                    $cart[$product_id[$count]] = $item_array;
                    session()->put('cart', $item_array);

                }

                $cart_product_id = array_keys($cart);
                session()->put('cart', $cart_product_id);

            }
        }
    }
}

, но эта переменная сеанса функции getCart всегда получает значение NULL.это мой сценарий

<script>
$(document).ready(function(){
load_product();
load_cart_data();
function load_product(){
$.ajax({
 url: "{{route('item.list')}}",
 method: "POST",
 data: {_token: '{{ csrf_token() }}'},
 success: function(data){

     $('#display_item').html(data);
   }
    })
}
function load_cart_data(){
  $.ajax({
    url: "{{route('item.cart')}}",
    method: "POST",
    data: {_token: '{{ csrf_token() }}'},
    success: function(data){                             
          $('#shopping_cart').html(data);
    }
    });
  }

$('#add_to_cart').click(function(){
   var product_id = [];
   var product_name = [];
   var product_price = [];
   var action = "add";
   $('.select_product').each(function(){
if($(this).prop('checked') == true)
 {                           
       product_id.push($(this).data('product_id'));                          
       product_name.push($(this).data('product_name'));                          
       product_price.push($(this).data('product_price'));
}
   });
if(product_id.length > 0)
{
   $.ajax({
    url: "{{route('cart.add')}}",
    method: "POST",
    data: {_token: '{{ csrf_token() }}', product_id: product_id, 
            product_name: product_name, product_price: product_price, 
            action: action},
    success: function(data){             
         $('#select_product').each(function(){           
         if($(this).prop('checked') == true)
    {                            
         $(this).attr('checked', false);
    }
      });                        
         load_cart_data();
     alert("Item has been added into cart");
    }
      });
}
else
{
    alert("Select at least one item");
}
    });
      });           
</script>

как я могу исправить эту проблему и показать элементы в моей корзине?

...