【问题标题】:Javascript: Create and Check for 2 Cookies [closed]Javascript:创建并检查 2 个 Cookie [关闭]
【发布时间】:2011-07-27 04:21:23
【问题描述】:

好的,我们运行一个包含购物车的网站。场景如下:客户来到该站点并将产品添加到他们的购物车中。他们去吃晚饭,把物品放在购物车里,没有结账。第二天他们想购买该物品。他们访问该网站,并没有注意到它已经在他们的购物车中,而是尝试再次将其添加到购物车中,但他们收到错误消息说它缺货(因为只有一个库存,而且他们已经在他们的购物车中。 ) 现在我们失去了一笔交易。

我要做的是创建 2 个 cookie:一个持续 7 天(与购物车 cookie 相同),一个用于会话。它的工作方式是这样的:他们的第一次访问会创建 2 个 cookie:一个用于 7 天,一个用于会话。现在假设客户添加了一个产品并关闭了他们的浏览器。会话 cookie 过期,留下 7 天 cookie。现在,当他们回来时,脚本将检查 7 天 Cookie 是否存在,而不是会话 cookie,从而触发我自己的一些代码运行。

基本结构是这样的。

If 7DayCookie Exists {
   If SessionCookie Exists {
      End Script;
   }
   Else if SessionCookie Does Not Exist {
      [Insert My Own Code]
   }
}

Else if 7DayCookie Does not Exist {
   Create SessionCookie;
   Create 7DayCookie;
   End Script;
}

谁能帮我做这个?我认为这对于任何精通 cookie 和 javascript 的人来说都是小菜一碟。

提前致谢!


最终的工作代码。

var wc = readCookie('wfwc');
var sc = readCookie('wfsc');

if (wc) {
   if (sc) { }
   else if (!sc) {
       alert("It works.");
   }
}

else if (!wc) {
   createCookie('wfwc','week',7);
   createCookie('wfsc','session',0);
}

【问题讨论】:

    标签: javascript html session cookies


    【解决方案1】:

    我强烈推荐 Peter Paul Koch's quirksmode 的 cookie 函数。您需要的 3 个函数是 createCookie、eraseCookie 和 readCookie。

    对于会话 cookie,您需要创建一个不包含“过期”标头的 cookie。对于 7 天 cookie,您需要创建一个 7 天后过期的 cookie。

    然后,在 javascript 中,您可以执行以下操作:

    theme = readCookie("theme");
    // if a cookie called "theme" isn't present, initialize.
    if (!theme) {
        theme = "sky.json";
    } 
    

    我自己使用 PPK 的脚本,我确实将 == 更改为 === 以避免函数中的类型强制,尽管这不是绝对必要的。

    【讨论】:

    • 是的,我自己也发现了。我正在阅读它。谢谢。
    • 我在上面添加了我的代码。我似乎无法让它工作。
    • 您需要使用诸如 firebug (For firefox) 之类的调试工具或 chrome 开发者功能来验证 cookie 是否被正确创建。
    • 我有 Firefox 的 Web Developer 工具栏,它们正在显示。
    • 然后在您读取 Cookie 行后添加警报语句以验证它们也被正确读取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2016-05-18
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多