[英]Laravel : Update Database using Ajax
我已經建立了一個購物車。在嘗試使用ajax更新數據庫的地方。當我要更新數量時,它將立即反映數據庫。
為此,我使用了以下視圖:
@foreach($carts as $row)
<input type="hidden" class="cat_id" value="{{$row->id}}"/>
<input type="number" class="quantity" value="{{$row->no_of_items}}" name="qty" maxlength="3" max="999" min="1" /> ×${{$row->p_price}}
@endforeach
這是Ajax部分:
$(".quantity").change(updateCart);
function updateCart(){
var qty = parseInt($(this).val());
var cat_id = parseInt($('.cat_id').val());
console.log(cat_id);
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url:"{{url('cart/update/{cat_id}/{qty}')}}",
method:"POST",
data:{cat_id:cat_id, qty:qty},
success: function( data ) {
// console.log(data);
}
});
}
路線
路線::后( '車/更新/ {CAT_ID} / {}數量', 'ProductController的@ cartUpdate');
和控制器部分:
public function cartUpdate($cat_id, $qty)
{
$cart = Cart::find($cat_id);
$product = Product::find($cart->product_id);
$cart->no_of_items = Input::get('qty');
$cart->price = $product->price * $cart->no_of_items;
$cart->save();
}
我的購物車表中有product_id我面臨的問題是,每當我嘗試更新控制台模式下看到的錯誤數量時:
ProductController.php中的ErrorException試圖獲取非對象的屬性
當我dd()cat_id時,我看到所有curt的值為null或相同。.可能是什么? 謝謝
問題是您沒有通過URL傳遞cat_id
和qty
,而是通過ajax發布請求傳遞
$.ajax({ url:"{{url('cart/update/{cat_id}/{qty}')}}", method:"POST", data:{ cat_id : cat_id, qty: qty }, success: function( data ) { // console.log(data); } });
因此$cat_id
和$qty
在控制器中為null
,因此您需要將控制器中的代碼更改為
public function cartUpdate($cat_id, $qty) { $cart = Cart::find(Input::get('cat_id')); $product = Product::find($cart->product_id); $cart->no_of_items = Input::get('qty'); $cart->price = $product->price * $cart->no_of_items; $cart->save(); }
嘗試這種方式:
@foreach($carts as $row)
<input type="hidden" class="cat_id" name="cat_id" value="{{$row->id}}"/>
<!--Add name="cat_id" AS Attribute -->
<input type="number" class="quantity{{$row->id}}" value="{{$row->no_of_items}}" name="qty" maxlength="3" max="999" min="1" /> ×${{$row->p_price}}
@endforeach
和Ajax部分:
@foreach($carts as $row)
$(".quantity{{$row->id}}").change(updateCart);
@endforeach
function updateCart(){
var qty = parseInt($(this).val());
var cat_id = parseInt($('.cat_id').val());
console.log(cat_id);
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url:'cart/update',
method:"POST",
data:{
cat_id:cat_id,
qty:qty
},
success: function( data ) {
// console.log(data);
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.