1

我有一个购物网站,我正在使用 javascript 将商品添加到购物车。每次我单击添加到购物车时,它都会将项目的名称放在代表购物车的 div 中。我想在每个页面上保留购物车的内容,所以我所做的是:

$("#cartlink").attr("href", "cart.php?app="+tab+"")

其中“tab”是一个包含购物车中所有商品的数组。然后,我使用 GET 检索 cart.php 页面上的购物车元素。但我的问题是因为我使用 JS 在购物车中添加项目,如果用户更改页面而不点击 cart.php?app 链接,标签将被删除,我无法恢复“标签”。如果用户单击 cart.php 链接,我可以使用 GET 并将内容存储到会话中,然后在每个页面上使用它。

因此,如果用户决定不单击 cart.php,我需要一种方法来记住购物车内容。

谢谢!

4

3 回答 3

0

您可以使用localStorageJavaScript 存储购物车状态,并在用户确认订单时将其提交给服务器。

于 2012-12-17T02:00:51.727 回答
0

我建议使用插件,例如http://www.jstorage.info/

它将为您提供一种在客户端存储/检索数据的简单方法

于 2012-12-17T02:10:12.837 回答
0

我不确定我是否完全理解您在做什么,但听起来您可以将侦听器绑定到窗口beforeunload事件,该事件在页面卸载(位置更改)之前调用。这就是网站(弹出式广告)实现“您确定要离开”对话框的方式。

一个例子:

window.document.addEventListener('beforeunload', function(event) {
  $.ajax({ url: '/saveCart.php', data: tab, 
      success: function(){
      }, 
      error: function(data) { 
      }
    });
}, false);

请注意,由于您无法取消beforeunload事件,因此仅更新 cookie 而不是进行 ajax 调用可能更安全,因为如果 HTTP 请求由于某种原因失败,页面仍将继续卸载。这是关于设置 cookie 的非常好的入门指南

一个非常简单的解决方案是在beforeunload侦听器中返回一个字符串,这将创建一个确认对话框,可能会说“您的购物车将不会被保存。请通过单击“保存购物车”来保存”等。不是最好的用户体验虽然。

于 2012-12-17T02:12:16.813 回答