使用jQuery设置cookie的问题

时间:2016-12-21 15:04:25

标签: javascript jquery jquery-cookie

我正在尝试编写一些jQuery,当页面加载时,检查是否已设置cookie。如果尚未设置,则打开模态,并将cookie设置为6小时。

好像我的cookie没有设置好,而且我的if / else语句中没有得到任何一个console.log语句,无论cookie是否设置。在控制台中,当我键入$.cookie('email-signup')时,我收到错误消息“无法读取属性'cookie'未定义。

我以前从未真正这样做过,所以任何帮助或建议都会非常感激!!!

我的jQuery是:

jQuery(document).ready(function($) {
   if (!!$.cookie('email-signup')) {
        SetNewsletterCookie(email);
        console.log('loaded');

    }

   function SetNewsletterCookie(email) {
      $('#modalnewslettercontent').html('<iframe frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="100%" height="400" src="'+themePath+'views/newsletter-signup.html"></iframe>');

         var date = new Date();
         var minutes = 180;
         date.setTime(date.getTime() + (minutes * 60 * 1000));
         $.cookie('email-signup', 1, {expires: date, path: '/'});
         console.log('cookie set');

    }   
 });

3 个答案:

答案 0 :(得分:1)

根据Jquery-Cookie的docs,您{r = {1}}语句会创建一个变量而不是Cookie。再试一次他们的例子:

  

创建会话cookie:

var
     

从那时起7天内创建过期的Cookie:

$.cookie('name', 'value');
     

创建过期的Cookie,在整个网站上有效:

$.cookie('name', 'value', { expires: 7 });

答案 1 :(得分:0)

您错过了必须分配给Cookie的值。

  

您现在拥有的是var newsletter = $.cookie('email-signup');

     

应该是:var newsletter = $.cookie('email-signup', 1);

     

“1”是你的价值。

将Cookie设置为在6小时内过期,就像您的问题一样,您可以执行以下操作:

jQuery(document).ready(function($) {
  var newsletter = $.cookie('email-signup', 1);
  console.log(newsletter);
  if (newsletter == null) {
        SetNewsletterCookie('email-signup', 180);
  }

function SetNewsletterCookie(newsletter, minutes) {
$('#modalnewslettercontent').html('<iframe frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="100%" height="400" src="../../email-signup.html"></iframe>'); 
         var date = new Date();
         var m = minutes;
         date.setTime(date.getTime() + (m * 60 * 1000));
         $.cookie(newsletter, 1, { expires: date });
  } 
});

答案 2 :(得分:0)

您已写过:

jQuery(document).ready(function($) { ... });

但是函数function($) { ... }被调用而没有参数。这意味着函数定义中的$(与外部声明的$分开声明)是undefined,即使定义了外部的$也是如此。 (我不知道是不是。)该函数应该是function() { ... },没有$参数;如果你改变它可能会修复它。如果没有,请将所有$替换为jQuery,否则添加var $ = jQuery;