我总是在网上冲浪和堆栈溢出来寻找答案,我只是在找不到答案的时候问。
我已经使用 jquery 和 php 构建了一个小型购物车。
只有一个错误我无法弄清楚。
当用户添加一个项目时,该项目的数量为 1。如果他再次添加相同的项目,数量变为 2,依此类推。
假设用户选择了一个项目并且数量为 2。如果他单击删除按钮一次,该项目的数量变为 1。这就是我想要的,但如果他再次单击删除按钮,该项目将被删除。
问题是当用户添加他刚刚删除的相同项目时。当他添加它时,该项目的数量变为 4。
这是添加项目的代码:
@$new = $_POST['item'];
if($new) {
if(!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
$_SESSION['items'] = 0;
$_SESSION['total_price'] = '0.00';
}
if(isset($_SESSION['cart'][$new])) {
$_SESSION['cart'][$new]++;
} else {
$_SESSION['cart'][$new] = 1;
}
}
这是删除项目的代码..
@$remove = $_GET['remove'];
if($remove) {
if(isset($_SESSION['cart'][$remove])) {
$_SESSION['cart'][$remove]--;
foreach ($_SESSION['cart'] as $item => $qty) {
if($qty < 1) {
unset($_SESSION['cart'][$qty]);
unset($_SESSION['cart'][$item]);
}
}
} else {
$_SESSION['cart'][$remove];
}
}
我是 php 和一般编程的新手;我1个月前开始学习。
编辑:问题出在javascript代码上,禁用了javscript,购物车运行良好,启用javascript时,当我添加一个项目时,我在数量中得到2而不是1,如果我删除该项目并将其再次添加到购物车,它会成倍增加数量从 2 到 4,依此类推。
$(".shop_cart").submit(function() {
var data = $(this).serialize();
$.ajax({
type: 'post',
url: 'cart.inc.php',
data: data,
cache: false,
success: function(data) {
$("#cart").html(data);
}
});
return false;
});
这是从购物车中删除的代码
$(".remove").click(function() {
var remove = 'remove=' + $(this).attr('id')
$.ajax({
type: 'get',
url: 'cart.inc.php',
cahce: false,
data: remove,
success: function(data) {
$("#cart").html(data);
}
})
return false;
});