0

我有一个小型购物车可在 WordPress 中与 PHP 一起使用,但现在我正在实现它以在具有 AJAX 的站点中使用。

我有一个 PHP 函数,它可以找到一些 cookie,这些 cookie 告诉我用户在购物车中放了什么,但是,由于现在我根据用户选择将产品信息加载到同一个 div 中,因此 PHP 的该函数不再有用并且需要使用 JS 或 JQuery 来完成,以便在每次用户更改为另一个产品时进行更新。

PHP中的函数是:

function in_cart($post_id){
$found = false;
if(!empty($_COOKIE['cart'])){
    foreach ($_COOKIE ['cart'] as $c) {
        if ($c ['id'] == $post_id)
            $found = $c;
    }
}   
return $found;

}

cookie 被称为“cart[0][id]”和“cart[0][quantity]”,其中“0”的增量取决于产品的数量,使用该功能,我可以在所有实例中运行以“购物车”开头的 cookie,但我似乎无法在 JS 中复制该循环。

我尝试使用正则表达式来允许第一组 og 括号内的任何数字,但它不起作用(我对 JS 很陌生,所以不确定我是否正确地做到了)。

有人有建议吗?

更新:这是我最后一次尝试使用正则表达式:

var nums = /^[0-9]+$/;
function readCookie(c_name)
{
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
  {
  c_start = c_value.indexOf(c_name + "=");
  }
if (c_start == -1)
  {
  c_value = null;
  }
else
  {
  c_start = c_value.indexOf("=", c_start) + 1;
  var c_end = c_value.indexOf(";", c_start);
  if (c_end == -1)
  {
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
cart = readCookie("cart["+ nums +"][id]");
4

1 回答 1

1

请参阅关于如何在 javascript 中访问 c​​ookie 的优秀MDN 文章,它们甚至提供了读取/写入 cookie 值的完整实现。简而言之,cookie 可以作为文档的属性访问:document.cookie. 该属性将属于您的域的所有 cookie 存储为字符串(例如:)foo=bar;baz=bizz。要访问单个元素,您必须想出一些正则表达式魔法,因此可以找到MDN 文章的链接。;-)

那里的解决方案让您非常舒适地设置/获取/检查/删除cookies,例如

docCookies.setItem("foo", "bar");
docCookies.getItem("foo"); // bar
docCookies.hasItem("foo"); // true
docCookies.removeItem("foo");

顺便说一句,如果你使用 jQuery,有一个非常好的插件

于 2013-10-22T21:15:59.073 回答