Php 为什么Ajax总是更新同一个会话购物车,而不是向其中添加新元素

Php 为什么Ajax总是更新同一个会话购物车,而不是向其中添加新元素,php,ajax,session,cart,Php,Ajax,Session,Cart,我在寻找帮助,我在购物车部分工作,我有产品部分我在使用ajax请求向购物车添加项目,我能够向部分添加项目,它开始更新购物车,而不是向购物车添加或附加新元素,它用新值更新购物车!旧的是删除这里是代码 function getproid(id) { alert(id); var p_qty = $('#p_qty'+id).val(); var product_size = $('#product_size'+id).val();

我在寻找帮助,我在购物车部分工作,我有产品部分我在使用ajax请求向购物车添加项目,我能够向部分添加项目,它开始更新购物车,而不是向购物车添加或附加新元素,它用新值更新购物车!旧的是删除这里是代码

    function getproid(id)
    {
        alert(id);
        var p_qty = $('#p_qty'+id).val();

        var product_size = $('#product_size'+id).val();

        var product_price = Number($('#product_price'+id).text());

        var product_id = $('#product_id'+id).val();


        alert(p_qty);

        $.ajaxSetup({
                  headers: {
                      'X-CSRF-TOKEN': $('input[name="_token"]').val()
                  }
              });
        $.ajax({

                  url: "{{ route('addtocart') }}",
                  method: 'post',
                  data: {

                        product_id:product_id,
                        p_qty:p_qty,
                        product_size:product_size,
                        product_price:product_price
                  },

                  success: function(result){
                  var output = 'Product has been added to cart. <a href="{{route('cart')}}">View cart</a>';

                    jQuery('#view_response').html(output);



                 }


        });
    }


您确定没有覆盖数据吗?查看$cart=Session::get('cart')之后的$cart值;然后再次说明修改后$cart的值是多少。我猜你需要改变这一点:

       $cart = [
                $product_id => [
                    "product_quantity" => $product_quantity,
                    "product_size" => $product_size,
                    "product_price" => $product_price,
                    "product_total" => $product_total

                ]
        ];
为此:

       $cart[] = [
                $product_id => [
                    "product_quantity" => $product_quantity,
                    "product_size" => $product_size,
                    "product_price" => $product_price,
                    "product_total" => $product_total

                ]
        ];
或者这个:

       $cart[product_id] = [
                    "product_quantity" => $product_quantity,
                    "product_size" => $product_size,
                    "product_price" => $product_price,
                    "product_total" => $product_total

                ];
或者类似的东西,或者使用array_merge()。任何一个都将附加到$cart数组,您只需替换$cart数组。一些基本的故障排除会引导您找到这个答案。如果不知道$cart的结构,这是最好的猜测

而且,这看起来很糟糕,如果客户可以发送
$request->product\u price
,那么我可以将价格设置为我想要的任何价格,甚至可能-20.00,而且你还欠我钱以及我订购的产品。你的网站是什么?也许我会点些东西,弄点钱:-)

       $cart[product_id] = [
                    "product_quantity" => $product_quantity,
                    "product_size" => $product_size,
                    "product_price" => $product_price,
                    "product_total" => $product_total

                ];