JS相当于PHP函数来查找cookie

时间:2013-10-22 21:00:43

标签: javascript php regex cookies

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

我有一个PHP函数找到一些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”的增量取决于有多少产品,并且使用该功能我可以通过所有产品运行以“cart”开头的cookie实例,但我似乎无法在JS中复制该循环。

我尝试使用正则表达式来执行它,以便允许第一个集合og括号内的任何数字,但它不起作用(我对JS很新,所以不确定我是否正确执行了它。) / p>

有人有建议吗?

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

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]");

1 个答案:

答案 0 :(得分:1)

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

那里的解决方案让你设置/获取/检查/删除cookie非常舒服,例如。

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

顺便说一下,如果你正在使用jQuery,那就有一个非常好的plugin