2009-12-23 3 views
0

У меня есть следующий код, чтобы установить, получить и удалить куки:Удаление куки в Javascript не работает последовательно

function set_cookie(name, value, expires, path, domain, secure) { 
    var today = new Date(); 
    today.setTime(today.getTime()); 

    if (expires) { 
    expires = expires * 1000 * 60 * 60 * 24; 
    } 
    var expires_date = new Date(today.getTime() + (expires)); 

    document.cookie = name + "=" +escape(value) + 
    ((expires) ? ";expires=" + expires_date.toGMTString() : "") + 
    ((path) ? ";path=" + path : "") + 
    ((domain) ? ";domain=" + domain : "") + 
    ((secure) ? ";secure" : ""); 
} 

function get_cookie(name) { 
    var start = document.cookie.indexOf(name + "="); 
    var len = start + name.length + 1; 
    if ((!start) && 
    (name != document.cookie.substring(0, name.length))) { 
    return null; 
    } 
    if (start == -1) return null; 
    var end = document.cookie.indexOf(";", len); 
    if (end == -1) end = document.cookie.length; 
    return unescape(document.cookie.substring(len, end)); 
} 

function delete_cookie(name) { 
    document.cookie = name + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;'; 
} 

В моей программе, у меня есть нечто, называемое активное сообщение и использовать куки, чтобы помнить путь и существование активного сообщения. Естественно, у меня есть функция сброса сообщения, которая удалит файл cookie. Это выглядит следующим образом:

function discard_message() { 
    alert('cookie = '+get_cookie('active_message')); 
    clear_active_message_cookie(); 
    alert('should be null = '+get_cookie('active_message')); 
    update_message('Discard', false, false);  
} 

function clear_active_message_cookie(){ 
    delete_cookie("active_message"); 
} 

Как вы можете видеть, что я поставил оповещения, чтобы проверить, если печенье читается после его удаления. Странно то, что в одной части моего приложения cookie успешно удаляется, но отбрасывание сообщения в другой части моего приложения не работает. Второе предупреждение cookie выводит значение файла cookie. Я подтвердил, что имя файла cookie - то же самое.

Это почти так же, как моя просьба удалить cookie получает отказ. Кто-нибудь знает, в каких обстоятельствах это возможно?

Спасибо!

ответ

0

Я думаю, что удаленный файл cookie будет отключен только после того, как вы перешли от текущей страницы.

Вставьте код ниже справа после удаления cookie;

location.href = "bringmeback.html";

bringmeback.html (перенаправить на текущую страницу);

location.href="currentpage.html"; 

Вы можете использовать этот код для проверки того, был ли ваш файл cookie полностью удален.

+0

Это немного странно, учитывая, что cookie удаляет штраф в других частях моего приложения. Другими словами, я могу установить cookie на «http: // someapp/pageA» и удалить его на «http: // someapp/pageA» с помощью этого кода. Однако выполнение этого же процесса на «http: // someapp/pageB» приводит к тому, что cookie не удаляется. Можно спросить, какая разница между страницами, но я почти думаю, так как у меня есть указатель, указывающий точную точку отказа, проще просто попытаться понять, почему происходит сбой. – Tony

+0

моя точка: «вы можете установить cookie на« someapp/pageA »и удалить его на« someapp/pageA », но« someapp/pageA »не может сразу прочитать, что файл cookie удален, я стоял исправлен. –

+0

ok, i я просто говорю, что someapp/pageA действительно замечает, что cookie был удален, не выходя из страницы. где someapp/pageB не – Tony

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