2012-03-21 22 views
2

私は現在、jQueryのクッキープラグインを使用していて、ビューアのクリックページのどちら側に応じて、クッキーが適用されます。jQueryを使用してページを更新せずにクッキー値を更新する方法は?

<div id="leftClick">Click Me</div> 
<div id="rightClick">Click Me</div> 

問題は、クッキーが保存されると、それはせずに更新されませんでリフレッシュしたがって、ページが最新表示されていないため、ビューアが右要素をクリックしてからページを更新する前に、左要素をたどっても、_leftでCookieが上書きされているにもかかわらずレポートが正しく表示されます。ページを更新せずにクッキーをリアルタイムで読み取る方法はありますか?

<script type="text/javascript"> 
    var readCookie = $.cookie('whichSide'); 
    $(document).ready(function() { 
     $('#leftClick').click(function(){ 
     $.cookie('whichSide', 'left_'); 
     }); 
    $('#rightClick').click(function(){ 
     $.cookie('whichSide', 'right_'); 
     }); 
    $('#login').click(function(){ 
     _gaq.push(['_trackEvent', 'viewerChose', readCookie+'side']); 
    }); 
    }); 
​</script> 

答えて

5

これは、readCookie変数にCookieの値を格納しているためです。この変数は、クッキーを更新するときに自動的に更新されることはありません。クッキーを参照するときに古い値を取得している理由です。

あなたは、おそらくこのような何かしたい:あなたは一度だけreadCookie値を読み取り、その後、.click機能でその値を使用している

$('#login').click(function(){ 
    _gaq.push(['_trackEvent', 'viewerChose', $.cookie('whichSide')+'side']); 
}); 
3

を。あなたは、最新の値を使うことになるので、クリックイベントでそれを読んで試してみてください:あなたはクッキー自身の値をキャッシュしているよう

$('#login').click(function(){ 
    var readCookie = $.cookie('whichSide'); 
    _gaq.push(['_trackEvent', 'viewerChose', readCookie+'side']); 
}); 
2

は、あなたのコードからこれを削除してください。

var readCookie = $.cookie('whichSide'); 
あなたが $("#login").click()ハンドラでそれを必要とするのではなく、以前に保存された値を参照するたびに、クッキー値の新しいコピーを取得する場所、このようにコードを変更し

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#leftClick').click(function(){ 
     $.cookie('whichSide', 'left_'); 
     }); 
    $('#rightClick').click(function(){ 
     $.cookie('whichSide', 'right_'); 
     }); 
    $('#login').click(function(){ 
     _gaq.push(['_trackEvent', 'viewerChose', $.cookie('whichSide')+'side']); 
    }); 
    }); 
​</script> 
関連する問題