2015-05-26 5 views
1

новичок здесь. Попытка создать печенье, как этотCookie не установлен правильно

function setCook() 
{ 
    var name=prompt("enter your name"); 
    document.cookie=name; 
    var mycookie = document.cookie, 
    fixed_cookie = decodeURIComponent(mycookie); 

} 
function getCookie() 
{ 

    var mycookie = fixed_cookie; 
    document.write(mycookie); 
} 

setCook(); 
getCookie(); 

Но почему-то документ пуст. Пожалуйста, скажите мне, где я делаю это неправильно. Спасибо.

+0

Вы разместили '' 'вместо' '' в строке 'var mycookie = document.cookie''. Размещение ';' сделает его неявным глобальным, но это не так хорошо, было бы лучше, если бы вы объявили 'fixed_cookie' вне обеих функций, или если вы сделали:' window.fixed_cookie'. Кроме того, 'document.cookie' возвращает все файлы cookie, связанные с документом, я не знаю, хотите ли вы этого. –

ответ

1

Короткий ответ: Попробуйте следующее:

function setCook() 
{ 
    var name=prompt("enter your name"); 
    document.cookie="mycookie="+name+"; path=\"; 
} 

Объяснение

документ фактически может иметь несколько печенье, поэтому печенье дают имена.

Чтобы установить куки с именем «MyCookie», вы могли бы сделать это:

document.cookie = "mycookie=some value"; 

Вы также можете установить несколько печенье сразу, как это:

document.cookie = "mycookie1=value1; mycookie2=value2; mycookie3=value3"; 

Кроме того, следует отметить, что документ .cookie - это не просто стандартное свойство, а скорее геттер и сеттер. Чтобы проиллюстрировать это:

document.cookie = "mycookie=this is mine"; 
document.cookie = "yourcookie=this is yours"; 

// alert is: mycookie=this is mine; yourcookie=this is yours 
window.alert(document.cookie); 

Надеюсь, это должно начаться. Пожалуйста, смотрите на Set cookie and get cookie with JavaScript.

+0

jfriend00 прямо на том, что доступ к document.cookie дает все файлы cookie для документа. Вам нужно будет проанализировать строку, чтобы извлечь значение для одного файла cookie. Вот почему фреймворки, такие как jQuery, предоставляют служебные функции для работы с куки-файлами, которые абстрагируют эти детали. – Alex35

+1

EDIT: Я пропустил '' '. Поэтому мой комментарий ниже спорный. В результате ',', 'fixed_cookie' объявляется как локальная переменная в конце концов! Это связано с тем, что в одном из операторов могут быть объявлены несколько переменных (например, var var1 = "a", var2 = "b", var3 = "c"; '). Мой оригинальный комментарий следует: Кстати, в ответ на @ jfriend00, fixed_cookie не является локальной переменной! Локальные переменные обычно объявляются var myvariable = «некоторое значение»; однако, когда переменная объявлена ​​без слова var, она неявно становится свойством объекта window, а все свойства окна являются глобальными. – Alex35

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