2016-12-21 7 views
0

Я пытаюсь написать некоторый jQuery, который при загрузке страницы проверяет, установлен ли файл cookie. Если он не был установлен, открывается модальный режим и cookie устанавливается на 6 часов.Проблемы с настройкой файла cookie с jQuery

Кажется, что мой cookie не устанавливается, и я не получаю ни одного из операторов console.log в операторах if/else, независимо от того, установлен ли cookie или нет. В консоли, когда я печатаю $.cookie('email-signup'), я получаю сообщение об ошибке «Не удается прочитать свойство„кук“из неопределенных.

Я действительно никогда не делал этого раньше, так что любая помощь или совет была бы очень признателен !!!

Моего 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'); 

    } 
}); 

ответ

1

Согласно Чтобы Jquery-Пирожок docs, you'r var заявления Creats переменному, а не печенье попробовать еще раз с их примерами.

Создать кук сессии:

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

Создать истекающее печенье, 7 дней с тех пор:

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

Создать истекающее печенье, действительного по всему сайту:

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

Вы отсутствует значение, которое вы должны назначить своему файлу cookie.

, что у вас есть сейчас var newsletter = $.cookie('email-signup');

и должно быть: var newsletter = $.cookie('email-signup', 1);

"1" ваше значение.

, чтобы установить печенье истекает через 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 }); 
    } 
}); 
+0

ОК ... Теперь я вижу печенье. Является ли время истечения срока? – bjorkland

+0

Нет, 1 является значением файла cookie. чтобы установить время истечения, вам нужно сделать что-то подобное. –

+0

Ах, понял. Хорошо, нет. У меня есть что-то, чтобы установить срок действия. – bjorkland

0

Вы написали:

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

Но функция function($) { ... } является вызываемый без аргументов. Это означает, что $ внутри определения функции (которое объявлено отдельно от объявленного снаружи значения $) равно undefined, даже если определено значение $ снаружи. (Я не знаю, есть ли это.) Эта функция должна быть только function() { ... }, без аргумента $; если вы измените это, это может исправить. Если нет, замените все вхождения $ на jQuery или добавьте var $ = jQuery;.

 Смежные вопросы

  • Нет связанных вопросов^_^