我在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]");
答案 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。