0

WordPress の PHP で使用する小さなショッピング カートがありますが、現在は AJAX を使用するサイトで使用するために実装しています。

ユーザーがショッピング カートに何を入れたかを示す Cookie を見つける PHP 関数がありますが、ユーザーの選択に従って製品情報を同じ 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」が増加します。その関数を使用すると、a のすべてのインスタンスを実行できます。 「カート」として始まるクッキーですが、JSでそのループを複製できないようです。

最初のセットの角括弧内に任意の数字を許可するために、正規表現を使用して実行しようとしましたが、うまくいきません (私は 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 で Cookie にアクセスする方法については、 MDNの優れた記事を参照してください。Cookie 値の読み取り/書き込みの完全な実装も提供されています。簡単に言うと、Cookie はドキュメントの属性としてアクセスできます: document.cookie. その属性には、ドメインに属するすべての Cookie が文字列として保存されます (例: foo=bar;baz=bizz)。個々の要素にアクセスするには、正規表現の魔法を考え出す必要があるため、MDN の記事へのリンクです。;-)

そこでの解決策では、Cookie を非常に快適に設定/取得/チェック/削除できます。

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

ところで、jQuery を使用している場合は、非常に優れたプラグインがあります。

于 2013-10-22T21:15:59.073 に答える