如何使用 jQuery 在不刷新页面的情况下更新 cookie 值?

Posted

技术标签:

【中文标题】如何使用 jQuery 在不刷新页面的情况下更新 cookie 值?【英文标题】:How to update cookie value without page refresh using jQuery? 【发布时间】:2012-04-06 04:38:05 【问题描述】:

我目前正在使用 jQuery Cookies 插件,根据查看者点击页面的哪一侧,会应用 cookie:

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

问题是一旦 cookie 被存储,它不会在没有刷新的情况下更新。因此,如果查看者单击右侧元素,但在刷新页面之前,然后跟随左侧元素,它仍会报告 right_,尽管 cookie 已被 _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>  

【问题讨论】:

【参考方案1】:

这是因为您将 cookie 的值存储在 readCookie 变量中。当您更新 cookie 时,此变量不会自动更新,这就是您在引用它时获取旧值的原因。

你可能想要这样的东西:

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

【讨论】:

【参考方案2】:

您只读取一次 readCookie 值,然后在 .click 函数中使用该值。尝试在点击事件中读取它,以便您使用最新的值:

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

【讨论】:

【参考方案3】:

在您自己缓存 cookie 的值时,将其从您的代码中删除。

var readCookie = $.cookie('whichSide');

将您的代码更改为这样,您每次在 $("#login").click() 处理程序中需要它时都会获得一个新的 cookie 值副本,而不是引用以前保存的值:

<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>

【讨论】:

以上是关于如何使用 jQuery 在不刷新页面的情况下更新 cookie 值?的主要内容,如果未能解决你的问题,请参考以下文章

在不刷新页面的情况下更新网站的 CSS

如何在不刷新页面加载的情况下保留 jQuery 和 Bootstrap 功能?

Django:如何在不刷新页面的情况下更新图像?

如何在不重新加载页面的情况下刷新 div 和 mysql 代码

如何在不刷新页面的情况下更新角度数据?

如何使用 php 或 javascript 在不刷新页面的情况下自动更新 JSON 数据?