我创建了一组代码,其中我使用isset($_GET['add'])
将商品添加到购物车。
但是一旦刷新浏览器,它就会重复。我认为这很正常,因为浏览器会刷新相同的网址。
我唯一的解决方案是使用header(location:"")
更改URL。
但我想创建一些内容,如果将其添加到购物车中,则不应刷新浏览器。
例如HTML:
<a href="cart.php?addsr='.$row['id'].'">ADD TO CART</a> `
if(isset($_GET['add'])) {
/* FUNCTIONS HERE */
header('location:'.$page);
}
一切都很好。实际上,它可以正常工作,但是,可以在不刷新页面的情况下添加到购物车吗? 我的另一个选择是删除cart.php 示例:
<a href="?addsr='.$row['id'].'">ADD TO CART</a>
但是基本上,当我刷新浏览器时,由于URL相同而导致操作重复,因此它会复制项目。
答案 0 :(得分:0)
代替使用锚标记,您可以使用按钮,并通过jquery ajax将数据提交到特定的url,这样就不会刷新页面。
答案 1 :(得分:0)
如果无法避免刷新,则可以在网址中添加随机数或时间戳:
<a href="cart.php?addsr='.$row['id'].'&t='.time().'">ADD TO CART</a>
然后,在您的php中可以在会话中设置“ t”参数,并检查最后一个值是否不同。
session_start();
if (!isset($_SESSION['lastItemCheck'] || $_SESSION['lastItemCheck'] != $_GET['t']) {
/* Add the item to the cart */
/* Set the $_SESSION variable as new t parameter */
$_SESSION['lastItemCheck'] = $_GET['t'];
} else {
/* This item was added to the cart, do nothing */
}
答案 2 :(得分:0)
还有一个名为add-cart-item.php的页面,然后在其中运行您的进程。然后通过购物车主页面上的ajax调用该页面。