我正在尝试从购物车中删除商品,但是当我单击删除按钮时,该商品不会消失。我想知道发生了什么,并希望有人可以帮助我弄清楚发生了什么。我不会发布一些后端代码,因为我认为它可以正常工作。似乎一切正常,但是当我单击删除按钮时,它不会删除内容。
$(document).ready(function(data){
load_cart_data();
function load_cart_data()
{
$.ajax({
url: "model/fetchcart.php",
method: "POST",
dataType: "json",
success: function(data){
$('#cart_items').html(data.cart_details);
$('.total_price').text(data.total_price);
$('.badge').text(data.total_item);
}
});
}
$('.purchase_add').click(function(){
var product_id = $(this).attr("id");
var product_name = $('#name'+product_id).val();
var product_code = $('#code'+product_id).val();
var product_price = $('#price'+product_id).val();
var product_quantity = $('#quantity'+product_id).val();
var action = "add";
if (product_quantity > 0) { // as in the value
$.ajax({
url: "model/action1.php",
method: "POST",
data: {
product_id:product_id,
product_name:product_name,
product_code:product_code,
product_price:product_price,
product_quantity:product_quantity,
action:action,
},
success: function(data) {
load_cart_data();
alert('Item has been added to cart');
}
});
} else {
alert('Please enter number of quantity');
}
});
$(document).on('click', '.delete', function(){
var button = $(this);
var product_id = $(this).attr("id");
var action = 'remove';
if(confirm("Are you sure you want to remove this product")) {
$.ajax({
url: "model/action1.php",
method: "POST",
data: {
product_id: product_id,
action: action
},
success: function()
{
load_cart_data();
button.parents('.shopping_cart_item').fadeOut('fast');
$('#shopping_cart_item'+product_id).remove();
}
})
}
else
{
return false;
}
});
});
当我单击删除按钮时,如果使用警报功能,我确实会收到反馈,但该项目不会自行设置。删除功能或fadeOut功能都不会删除内容,并且SESSION不会像看起来那样未设置。
这是我的动作文件的一部分
if($_POST["action"] == 'remove')
{
foreach($_SESSION["shopping_cart"] as $keys => $values)
{
if($_SESSION["shopping_cart"][$keys]['product_id'] == $_POST["product_id"])
{
unset($_SESSION["shopping_cart"][$keys]);
}
}
}
这是从load_cart_data()函数获取的数据
<div class="shopping_cart_item" id="shopping_cart_item'.$values['product_id'].'">
<div class="shopping_cart_img"><img src="image/'.$values['product_code'].'.jpg"></div>
<div class="shopping_cart_desc">
<div class="shopping_cart_delete"><p>ET SPORK<span class="dash"> - </span>PREORDER<span class="dash"> -</span> 31%</p><div class="delete" id='.$values['product_id'].'>x</div></div>
<p class="finish"><span>Finish:</span> <span>'.$values['product_name'].'</span></p>
<div class="shopping_cart_number">
<input type="text" value='.$values['product_quantity'].'><span>x</span><span>'.$values['product_price'].'</span>
</div>
</div>
</div>
将非常感谢您的帮助。谢谢。
答案 0 :(得分:0)
您可能可以替换unset方法,因为文档http://php.net/manual/en/function.unset.php说:
如果在函数内部未设置全局变量,则仅销毁局部变量。调用环境中的变量将保留与调用unset()之前相同的值。
因此,您可以使用此:
if($_POST["action"] === 'remove')
{
$cart = $_SESSION["shopping_cart"];
foreach($cart as $keys => $values)
{
if($value['product_id'] === $_POST["product_id"])
{
unset($cart[$keys]);
break;
}
}
$_SESSION["shopping_cart"] = $cart;
}
或
if($_POST["action"] === 'remove')
{
foreach($_SESSION["shopping_cart"] as $keys => $values)
{
if($value['product_id'] === $_POST["product_id"])
{
array_splice($_SESSION["shopping_cart"], $keys, 1);
break;
}
}
}
此示例在文档注释中,用于使用unset删除会话属性,并且register_globals已打开。
unset($GLOBALS[_SESSION][$sessionVariableName]);
和
$variable = $_SESSION['variable'];
unset( $_SESSION['variable'], $variable );