Php 为什么Ajax总是更新同一个会话购物车,而不是向其中添加新元素
我在寻找帮助,我在购物车部分工作,我有产品部分我在使用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();
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
];