为了账号安全,请及时绑定邮箱和手机立即绑定

如何从foreach语句生成的结果中获取相应的值

如何从foreach语句生成的结果中获取相应的值

PHP
繁星淼淼 2021-10-15 16:37:08
我正在创建一个购物车页面 Package used - Crinsane/LaravelShoppingcart要添加数量,我使用 Ajax 调用,对于单个产品,我可以更新数量并减少数量,一切都很完美。当我尝试将另一件商品添加到购物车并尝试更新其数量时,问题就出现了。我认为问题在于我获取 rowID 的方式。由于我使用 foreach 并调用它的类,我只得到第一个 id。我不确定如何以不同的方式获取 ID。我没有粘贴所有购物车代码,因为它会更长这是我的代码,刀刃:@foreach (Cart::Content() as $cartcontent)<footer class="content">                <input type="hidden" class="rowID" name="" value="{{$cartcontent->rowId}}">                <span class="qt-minus">-</span>                <span class="qt">{{$cartcontent->qty}} </span>                <span class="qt-plus">+</span>                <h2 class="full-price">                    {{$cartcontent->model->presentPrice() * $cartcontent->qty}}                </h2>                <h2 class="price">                    {{$cartcontent->model->presentPrice()}}                </h2>            </footer><br>@endforeach在html源代码中上面的rowID是不同的js$(document).ready(function(){      function cartLogic(){      // var rowID = $('#rowID').val();      var rowID =  $('.rowID').val();    var quantity = $('.qt').text();    console.log(rowID);    console.log(quantity);    $.ajax({                url: 'cart/'+ rowID,                // url: 'cart/'+ $('#rowID').val(),                type: 'PATCH',                data: {  "_token": "{{ csrf_token() }}",                quantity : quantity,                 _method: "PATCH"},                success: function(res) {console.log(res);// window.location.reload();                }        });    }  $(".qt-plus").click(function(){    $(this).parent().children(".qt").html(parseInt($(this).parent().children(".qt").html()) + 1);    //  console.log('working');       cartLogic();  });控制器public function update(Request $request, $id)    {        // return $request->all();        // dd(Cart::content());        $quantity = $request->quantity;        Cart::update($id, $quantity); // Will update the quantity    }路线Route::patch('cart/{id}', 'CartController@update')->name('cart.update');当我查看 console.log(rowID); 我只得到第一个产品 ID。应该怎么做才能得到对应的ID任何帮助都应该不胜感激
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

您可以在客户端执行以下操作:


function cartLogic(rowID){

    $.ajax({

        url: 'cart/'+ rowID,

        type: 'PATCH',

        data: { 

            "_token": "{{ csrf_token() }}",

            _method: "PATCH"

        },

        success: function(res) {

            console.log(res);

        }

    });

}


$(".qt-plus").click(function() {

    $(this).parent().children(".qt").html(parseInt($(this).parent().children(".qt").html()) + 1);

    // Here you get ID of a cart record

    var rowID = $(this).parent().find('.rowID').val();


    cartLogic(rowID);

});

请注意,我quantity从 ajax-query 中删除了。如果需要 - 您可以将其作为第二个参数添加到cartLogic. 但请注意,有人可以修改 js-script 并将10000000000值作为数量或-42. 那你会怎么做?)所以,将购物车记录的 id 传递给服务器并在服务器上将数量增加 1 会更安全。


在服务器端,您应该使用以下查询更新您的记录:


UPDATE `table_name` SET quantity = quantity + 1 WHERE rowID = id


查看完整回答
反对 回复 2021-10-15
  • 1 回答
  • 0 关注
  • 291 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信