【发布时间】: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->grand_total = $request->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!');
}
}
【问题讨论】:
-
嗨,我已经看到了该问题的解决方案,但它对我的问题不起作用(仍然返回 null),因为在我的 span 标签中,值是 null 而不是像那个问题那样声明。
-
该值如何提交到服务器?使用 ajax 吗?
-
im 使用 http 请求
标签: javascript jquery laravel