阅读很多关于会话以及如何添加和删除项目的内容。我看到有很多不同的方法来完成这项工作。我有同样的问题。
我希望有人可以帮我解决这个问题。在这个社区的帮助下,我从无到有地走到了现在的位置(谢谢!)。
这是我的问题,我希望我能解释一下,这样你才能理解。
假设我有一家出售T恤和裤子的商店。当我将T-hirt项目保存到我的购物车时,它显示它应该如此。但是我无法删除该项目。如果我然后过滤我的页面for pans(这会触发AJAX事件)并尝试删除T恤,则删除该项目。但所有项目不仅仅是我点击要移除的项目。
以下是我添加产品的HTML:
<button type="submit"
class="btn btn-primary text-right add-product showtoast"
data-target="post-<?php the_ID(); ?>"
data-attribute="<?php the_title(); ?>"
data-product="<?php the_title(); ?>">
Add to cart
</button>
这是删除项目的HTML:
<div class="echo-product">
<?php echo htmlspecialchars($product); ?>
<input type="submit" class="delete-product" value="Remove">
</div>
这些是我添加和删除项目的Javascripts:
$('.add-product').click(function() {
var productName = $(this).data('product');
$.post('http://example.com/reload.php?addparam',
{productName: productName}, function(data) {
$('.txtHint').html(data);
})
});
$('.delete-product').click(function() {
var productName = $(this).data('product');
$.post('http://examples.com/reload.php?delparam',
{productName: productName}, function(data) {
$('.txtHint').html(data);
})
});
最后但并非最不重要的是,我的reload.php脚本:
<?php
session_start();
if (!array_key_exists('products', $_SESSION) || !is_array($_SESSION['products'])) {
$_SESSION['products'] = [];
}
$productName = array_key_exists('productName', $_POST) ? (string) $_POST['productName'] : '';
if(isset($_GET['delparam'])){
unset($_SESSION['products'][$productName]);
}
if(isset($_GET['addparam'])){
$_SESSION['products'][] = $productName;
}
?>
<?php foreach ($_SESSION['products'] as $product): ?>
<div class="echo-product">
<i style="color:#F60;padding-right:20px;" class="fa fa-anchor" aria-hidden="true"></i>
<?php echo htmlspecialchars($product); ?>
<input type="submit" class="delete-product" value="Remove">
</div>
<?php endforeach;?>
是否有人可以帮助我理解为什么(看起来像)AJAX事件必须在我能够移除项目之前进行。当我点击一个项目时,为什么它会删除所有项?
谢谢!
答案 0 :(得分:0)
比较产品的添加方式与删除方式
if(isset($_GET['delparam'])){
unset($_SESSION['products'][$productName]);
}
if(isset($_GET['addparam'])){
$_SESSION['products'][] = $productName;
}
添加产品时,只需将productName附加到数组即可。该条目接收数字索引。
删除产品时,您会将productName作为索引查找 - 但这不存在!
我确定它没有回答为什么所有产品都被移除,但它可能有助于做正确的事情。