【发布时间】:2021-11-24 23:10:49
【问题描述】:
我的问题解决者。希望你有一个富有成效的一天。我正在开发一个电子商务网站项目,我使用 Laravel 8 来完成它。到目前为止,我已经达到了创建“添加到购物车”的目的,以便客户可以购物。通过阅读不同的教程,我很高兴我可以将产品添加到购物车,编辑和更新它们也可以删除。但我希望它在不刷新页面的情况下工作。正如许多教程所建议的那样,我使用 Jquery 创建 Ajax 请求。如果我显示我的代码,我想你会很容易理解并提供帮助。
这是我的“加入购物车”链接
<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);
}
【问题讨论】:
-
您好,您能解释一下您的具体问题是什么吗,目前您刚刚给我们提供了进度报告
-
良好的代码缩进将帮助我们阅读代码,更重要的是它会帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
-
谢谢。我希望能够将产品添加到购物车,而无需刷新页面。所以问题是当我添加、删除、编辑和更新我的购物车时页面正在刷新。
-
我认为您可能需要添加
preventDefault();以阻止表单执行其默认提交操作 -
是的,您需要使用 SPA 架构并使用 ajax 从服务器请求数据。你必须知道需要实现更多的 javascript 来获得与 ui 的最佳用户交互...
标签: javascript php jquery ajax laravel-8