【问题标题】:How to pass span value to controller laravel?如何将跨度值传递给控制器​​ laravel?
【发布时间】:2021-05-01 01:44:49
【问题描述】:

我正在制作一个包含小计和总计的产品购物车。它们都在 A <span> 标签中。我想将总计值传递给控制器​​,但不知何故它不起作用并且总是为总计返回 null。 这是代码。

 function priceTotal() {
        var grandTotal = 0;
        $('#cart_checkout > tbody > tr').each(function() {
            var qty = $(this).find('.qty-input').val()
            var price = parseInt($(this).find('.price').text());
            var subTotal = qty * price;
            grandTotal += subTotal;
            $(this).find('.subtotal').text('Rp. ' + subTotal.toLocaleString('en'));
        });
        $('.grandtotal').text('Rp. ' + grandTotal.toLocaleString('en'));

        var data = $('#grandtotal').html();
        $('#grandtotal').val(data);

    }

$(document).ready(function() {
        priceTotal();
        $('.increment-btn').click(function(e) {
            e.preventDefault();
            var incre_value = $(this).parents('.quantity').find('.qty-input').val();
            var value = parseInt(incre_value, 10);
            value = isNaN(value) ? 0 : value;
            if (value < 100) {
                value++;
                $(this).parents('.quantity').find('.qty-input').val(value);
            }

            priceTotal();
        });


        $('.decrement-btn').click(function(e) {
            e.preventDefault();
            var decre_value = $(this).parents('.quantity').find('.qty-input').val();
            var value = parseInt(decre_value, 10);
            value = isNaN(value) ? 0 : value;
            if (value > 1) {
                value--;
                $(this).parents('.quantity').find('.qty-input').val(value);
            }

            priceTotal();
        });
    });


                <div class="card ">
                    <table class="table" id="cart_checkout">
                        <thead class="bg-transparent">
                            <tr>
                                <th scope="col" class="text-center">Thumbnail</th>
                                <th scope="col" class="text-center">Brand</th>
                                <th scope="col" class="text-center">Product</th>
                                <th scope="col" class="text-center">Size</th>
                                <th scope="col" class="text-center">Price</th>
                                <th scope="col" class="text-center">Quantity</th>
                                <th scope="col" class="text-center">Subtotal</th>
                                <th scope="col" class="text-center">Actions</th>
                            </tr>
                        </thead>
                        @foreach($cartlists as $cartlist)
                        <tbody class="bg-transparent" class="checkout_cart">
                            <tr class="cartpage">
                                <td class="text-center"><img src="{{asset('uploads/products/' . $cartlist->product->productimage)}}" width="100px;" height="100px;" alt="Image"></td>
                                <td class="text-center">{{$cartlist->product->brand->name}}</td>
                                <td class="text-center">{{$cartlist->product->productname}}</td>
                                <td class="text-center">{{$cartlist->product->productsize}}</td>
                                <td class="text-center">Rp. <span class="price">{{ $cartlist->product->productprice}}</span></td>
                                <td class="cart-product-quantity text-center" width="132px">
                                    <div class="input-group quantity">
                                        <div class="input-group-prepend decrement-btn changeQuantity" style="cursor: pointer">
                                            <span class="input-group-text">-</span>
                                        </div>
                                        <input type="text" class="qty-input form-control text-center" maxlength="2" value="1">
                                        <div class="input-group-append increment-btn changeQuantity" style="cursor: pointer">
                                            <span class="input-group-text">+</span>
                                        </div>
                                    </div>
                                </td>

                                <td class="text-center">
                                    <span class="subtotal" id="subtotal">Rp. {{ number_format($cartlist->product->productprice)}}</span>
                                </td>
                                <td class="text-center">
                                    <a href="/product-cart/delete/{{$cartlist->id}}" class="d-inline btn btn-danger">Delete</a>
                                </td>
                            </tr>
                        </tbody>
                        @endforeach
                    </table>
                </div>
                <div class="text-left mt-3">
                    <h5 class="bold">Total: <span class="grandtotal" id="grandtotal"></span>
                        <input id="grandtotal" type="hidden" name="grandtotal" value="">
                    </h5>

                    <p>Delivery and discount will be calculated during the checkout process.</p>
                </div>
                <input type="hidden" value="{{$cartlists}}" name="cartlists">

控制器 这是我发送总计的请求$order-&gt;grand_total = $request-&gt;grandtotal;

public function checkout(Request $request)
    {
        $cartlists = Cart::where('user_id', '=', Auth::user()->id)->get();

        //get all product from cart
        $products = [];
        foreach ($cartlists as $cartlist) {
            $product = Product::where('id', '=', $cartlist->product_id)->first();
            $products[] = $product;
        }


        $carts = Cart::where('user_id', '=', Auth::user()->id)->get();

        if ($carts->count() > 0) {

            $order = new Order();
            $order->order_number = 'ORD-' . strtoupper(mt_rand(1000000000, 9999999999));
            $order->status = 'pending';
            $order->user_id = Auth::user()->id;
            $order->grand_total = $request->grandtotal;
            $order->save();

            foreach ($carts as $cart) {
                $order_product = new order_product();
                $order_product->order_id = $order->id;
                $order_product->product_id = $cart->product_id;
                $order_product->is_review = 'no';
                $order_product->save();
            }

            //get all shipment
            $shipments = Shipment::all();

            //get all user address
            $addresses = Address_Delivery_Users::where('user_id', '=', Auth::user()->id)->get();

            $detailaddresses = null;

            return view('/transactions/delivery', compact('order', 'addresses', 'detailaddresses', 'shipments', 'products'));
        } else {
            return back()->with('status', 'There is no product on your cart, pick some!');
        }
    }

【问题讨论】:

  • 这能回答你的问题吗? how to pass span value into laravel controller
  • 嗨,我已经看到了该问题的解决方案,但它对我的问题不起作用(仍然返回 null),因为在我的 span 标签中,值是 null 而不是像那个问题那样声明。
  • 该值如何提交到服务器?使用 ajax 吗?
  • im 使用 http 请求

标签: javascript jquery laravel


【解决方案1】:

问题是你选错了。

var data = $('#grandtotal').html();

这将为您获取输入字段的 html,但您想获取跨度的内部 html。所以你必须得到类总和的所有元素并取第一项。

var data = $('.grandtotal').first().html();

但我会简单地添加一个 id,例如:grandtotal-span:

<h5 class="bold">Total:
  <span id="grandtotal-span"></span>
  <input id="grandtotal" type="hidden" name="grandtotal" value="">
</h5>

然后你就可以如你所愿地得到它:

var data = $('#grandtotal-span').html();

另一种选择是添加一些侦听器并相应地更改值。

【讨论】:

  • 我已经更改了它,但它似乎不起作用。我仍然为此返回 null。
  • 那么请出示发送请求的代码
  • 嗨,我已经通过添加控制器编辑了上面的代码。请看一下。 @Aless55
  • hmm 代码看起来不错,如果你愿意,你可以分享视图和整个 JS 脚本,我会看看。
  • 好的,非常感谢我已经更新了整个视图和 JS 脚本
猜你喜欢
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 2019-08-12
  • 2018-12-15
  • 2016-04-16
相关资源
最近更新 更多