我正在尝试从购物车中删除商品。当商品“保存到购物车”时,它们会保存到 session 中。
但现在我希望能够从这个“购物车”中删除某些商品。因为我从这里(stackoverflow)获得了脚本,所以我对代码不太熟悉。我在谷歌上看到了一些答案,这里描述了使用 unset
从 session 中删除条目。但我不知道从哪里开始。如果需要更多信息,请告诉我。感谢您查看我的问题...
这是 HTML(没什么特别的):
<div class="txtHint"></div>
这是我的脚本:
$('.add-product').click(function() {
var productName = $(this).data('product');
$.post('example.com/reload.php', {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 ($productName) {
$_SESSION['products'][] = $productName;
}
?>
<h4>Saved Items</h4>
<?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); ?></div>
<?php endforeach;?>
更新的代码:按照 Bert Maurau(我希望)的建议。
<?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;
}
?>
如果我使用它,它不会添加任何新项目...
最佳答案
你应该能够做到:
unset($_SESSION['products'][$productName]);
这将取消设置 array_key 及其与您的产品名称匹配的值。
编辑:使用未设置的代码
HTML:
$('.delete-product').click(function() {
var productName = $(this).data('product');
$.post('example.com/reload.php?delparam', {productName: productName}, function(data) {
})
});
Reload.php(在$productName之后)
if(isset($_GET['delparam'])){
unset($_SESSION['products'][$productName]);
}
if(isset($_GET['addparam'])){
//code for adding product
}
关于javascript - onClick 从 session 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567863/