我正在尝试编写一些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');
}
});
答案 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;
。