我正在开发一个电子商务应用程序。但问题是当用户将产品添加到购物车并在订购前关闭浏览器时,购物车将获取所有产品。所有购物车项目都保存在表格中。
如果用户在没有订购的情况下关闭浏览器,我只想刷新购物车。
答案 0 :(得分:2)
您可以使用Javascript事件来捕获浏览器并将ajax请求发送到将删除购物车数据的某个脚本:
<强>已更新强>
<script language="javascript">
function fnUnloadHandler() {
xmlhttp=null;
if (window.XMLHttpRequest)
{// code for Firefox, Opera, IE7, etc.
xmlhttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
if (xmlhttp!=null)
{
xmlhttp.open("GET","http://yourhost/del_cart_actionFile.php",true);
xmlhttp.send(null);
}
else
{
alert("Your browser does not support XMLHTTP.");
}
}
</script>
<body onbeforeunload="fnUnloadHandler()">
</body>
答案 1 :(得分:2)
当用户关闭浏览器时,无法可靠地知道/警告服务器。您需要重新考虑您的设计:即除非结帐完成,否则不要将购物车项目持久保存到数据库中。您可以而且应该将购物车项目保留在用户会话中,或者可能保存在客户端的cookie中(除非您的购物车尺寸很大)。
否则使用会话密钥键入数据库中的购物车数据。然后,您可以(可能)在应用程序的会话管理中添加某种挂钩,以便在清除会话时刷新数据库内容。
答案 2 :(得分:1)
服务器端实际上并不知道您何时关闭浏览器。您可以ping服务器onBeforeClose
并告诉它刷新购物车,但这意味着当用户关闭标签时 - 它也会刷新。
如果您的用户已登录 - 您只能将会话cookie保留为“浏览器会话”,这样用户在他或她回来时就会被注销。此时 - 每当用户登录时 - 刷新购物车。