【问题标题】:Laravel delete from Shopping Cart using AjaxLaravel 使用 Ajax 从购物车中删除
【发布时间】:2018-12-31 08:30:12
【问题描述】:

我想使用 Ajax 从购物车中删除,我添加没有问题,但是当我有很多项目并且可能需要一一删除时,如何在不刷新页面的情况下删除,我从删除函数传递 html在控制器中查看刀片,所以当我第一次在页面上删除但删除一个项目后无法删除更多

 <script>
 $(function(){ 
  $('.remove_item').on("click", function () { 
  var id = $(this).data('id'); 
  $.ajax({
         type: 'DELETE',
         url: "cart/"+ id,  
         data: {'_token': $('input[name=_token]').val()},
         success: function (data) {
           $('#cart_product').html(data);        
         }               
    });
   });
 });
</script>

在控制器中删除

public function destroy($id)
{
     Cart::remove($id);
     $products = Cart::content();
     foreach($products as $Product){

     echo '<div class="OrderItem_root styles_base styles_spacing-base">
           <div class="OrderItem_quantity styles_just-right styles_base 
           styles_spacing-base">'.$Product->qty.'</div>
           <div class="OrderItem_container">
           <div class="OrderItem_category"></div>
           <div class="OrderItem_itemHeader">
           <div id="titletest" class="OrderItem_name styles_just-right styles_base styles_spacing-base">'.$Product->name.'</div>
           <div id="cartprice" class="OrderItem_total">$'.$Product->price*$Product->qty.'</div>
            <input id="mycartprice" type="text" name="mycartprice" value="'.$Product->price.'"  hidden="">
         </div>
        <div>
        </div>
      <div>
     <button class="remove_item OrderItem_action Button_root" data-id="'.$Product->rowId.'" data-price="'.$Product->price*$Product->qty.'" data-qty="'.$Product->qty.'" type="submit">Remove</button>

     </div>
    </div>
   </div>';
   }
 }

【问题讨论】:

  • 在 ajax 调用中使用正确的错误处理模式
  • 我没有关于如何在控制器中使用按钮的所有错误,因此在第一次删除控制器后,即使它具有相同的 ID,也可以使用新的删除按钮将 json html 传递给 ajax或类但不能使用它,因为我在执行 javascript 函数之前已经加载了刀片

标签: javascript php jquery html laravel


【解决方案1】:

这是因为您的元素是动态更新的,您应该再次附加事件。 请改用此代码:

     <script>
     $(function(){ 
 $(document).on('click','.remove_item', function () { 
      var id = $(this).data('id'); 
      $.ajax({
             type: 'DELETE',
             url: "cart/"+ id,  
             data: {'_token': $('input[name=_token]').val()},
             success: function (data) {
               $('#cart_product').html(data);        
             }               
        });
       });
     });
    </script>

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 2021-04-02
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2019-06-17
    • 1970-01-01
    • 2017-01-10
    相关资源
    最近更新 更多