Php 如何使用ajax Laravel 8更新总量

Php 如何使用ajax Laravel 8更新总量,php,jquery,ajax,laravel,cart,Php,Jquery,Ajax,Laravel,Cart,我有我的购物车,为了添加到购物车中,我使用了ajax。它可以工作,但我不知道如何更新位于标题处的总数量。没有用于选择数量的字段的输入,我希望它在每次按下“添加到购物车”按钮后增加1(使用ajax)。我该怎么做 CartController: public function addCart(Request $request, $id){ $product = Product::find($id); $oldCart = Session::has('cart') ? Sessio

我有我的购物车,为了添加到购物车中,我使用了ajax。它可以工作,但我不知道如何更新位于标题处的总数量。没有用于选择数量的字段的输入,我希望它在每次按下“添加到购物车”按钮后增加1(使用ajax)。我该怎么做

CartController:

  public function addCart(Request $request, $id){
    $product = Product::find($id);
    $oldCart = Session::has('cart') ? Session::get('cart') : NULL;
    $cart = new Cart($oldCart);
    $cart->add($product, $product->id);

    $request = Session::put('cart', $cart);

    Session::flash('add-product', $product->name);

    return redirect()->back();
  }
包含主逻辑的自定义购物车类:

public function add($item, $id){
      $storedItem = [
        'qty' => 0,
        'id' => $item->id,
        'prod_url' => $item->url,
        'code_cat' => $item->category->code,
        'url_cat' => $item->category->url,
        'name' => $item->name,
        'cost' => $item->price,
        'price' => $item->price,
        'img' => $item->cardImage->path
      ];
      if($this->items){
        if(array_key_exists($id, $this->items)){
          $storedItem = $this->items[$id];
        }
      }
        $storedItem['qty']++;
        $storedItem['cost'] = $item->price * $storedItem['qty'];
        $this->items[$id] = $storedItem;
        $this->totalQty++;
        $this->totalPrice += $item->price;
    }
AddToCart按钮:

<div class="product-icon-container">
  <a href="{{ route('basket-add', [ 'id' => $item->id ]) }}" class="scrollOffset btn btn-success mt-2 mb-1">Add to Cart</a>
  <a href="#" class="btn btn-danger mt-2 mb-1">Buy now!</a>
</div>
add()
方法中,需要返回更新数量的结果

公共函数添加($item,$id){
//你的代码
return response()->json(['success'=>true]);
}
然后在ajax请求中,它有一个
success
函数来检查请求是否成功

$.ajax({
url:$(this.attr('href'),
成功:功能(数据、状态、xhr){
//成功
$('.prodcount').text(您的数量)
},
错误:(jqXhr,textStatus,errorMessage){
//句柄OnResponseError
}
});

我的问题被一位来自俄语国家的用户彻底解决了

作为一种选择,您可以通过稍微更改@HEL Mab的代码来获得一个好的解决方案

$(document).ready(function() {
      $('.product-icon-container').find('a.scrollOffset').click(function (event){
        event.preventDefault();
        let totalQty = parseInt($('.prodcount').text());
        $.ajax({

        url: $(this).attr('href'),
        success: function (data, status, xhr) {
          // onReponseSuccess
          totalQty++;
          $('.prodcount').text(totalQty);
        },
        error: function(jqXhr, textStatus, errorMessage) {
          // handle onReponseError
        }
    });
  });
});

Just count Session::get('cart')Items该解决方案得到了来自讲俄语的StackOverflow的人员的帮助。这里是:ru.stackoverflow.com/questions/1223651您的解决方案不起作用,可能是我做错了什么。但多亏了你,我想出了另一个办法。如果有兴趣,我会在下面的评论中展示。
$(document).ready(function() {
 $('.product-icon-container').find('a.scrollOffset').click(function (event){
   event.preventDefault();
   $.ajax({
      url: $(this).attr('href')
   });
  return false;
 });
});
$(document).ready(function() {
      $('.product-icon-container').find('a.scrollOffset').click(function (event){
        event.preventDefault();
        let totalQty = parseInt($('.prodcount').text());
        $.ajax({

        url: $(this).attr('href'),
        success: function (data, status, xhr) {
          // onReponseSuccess
          totalQty++;
          $('.prodcount').text(totalQty);
        },
        error: function(jqXhr, textStatus, errorMessage) {
          // handle onReponseError
        }
    });
  });
});