1
function setCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

$(document).ready(function(){
alert(getCookie('foo'));
setCookie('foo','test'); //just setting a cookie on page load

$('#bing').click(function(){
$('#frm1').submit();

});
});



HTML side(foo.phtml)

<a href="javascript:void(0);" id="bing">Go</a>

<form id="frm1" method="POST" action="/somecontroller/someaction">
<input type="hidden" name="foo_post" value="this is from post" />
</form>

//サーバ側

public function someactionAction(){

$_COOKIE['foo'] = $this->_request->getPost('foo_post');
$this->_redirect('/somecontroller/foo');
}

私の問題は、Cookieが設定されていないためnullを返すページの最初のロードにあります。alert再度更新するとalert「テスト」が表示されますが、アンカータグをクリックするとフォーム送信が発生し、Cookie値が書き換えられます「これは投稿からのものです」として、明らかにアクションがページに戻った後、「これは投稿からのものです」というアラートを受け取りますが、それでも「テスト」というアラートが表示されます。Cookieの値は書き換えられません

私の mozilla Cookie コンソールには、値が「test」と「this is from post」の foo という名前の 2 つの Cookie があります。

4

1 に答える 1

1

「foo という名前の Cookie が 2 つあります」

名前が同一の場合、ドメインは異なる必要があります。同じドメインを使用して両方の Cookie を設定します。やとexample.netは異なりますのでご注意ください。www.example.net.example.net

于 2012-07-16T11:49:37.030 に答える