2011-06-22 5 views
3

Используя Javascript, я хочу создать файл cookie со значением поля ввода с идентификатором «имя пользователя» каждый раз при нажатии кнопки. Затем я хочу прочитать этот файл cookie и отобразить его на веб-сайте. Хотя я просто попробовал это, чтобы проверить свои знания куки, я теперь хотел бы узнать решение этой проблемы, потому что мой код не работает.Проблема с Javascript и Cookies

Я буду использовать эти две функции из elated.com:

function set_cookie (name, value, exp_y, exp_m, exp_d, path, domain, secure) 
{ 
var cookie_string = name + "=" + escape (value); 

if (exp_y) 
{ 
    var expires = new Date (exp_y, exp_m, exp_d); 
    cookie_string += "; expires=" + expires.toGMTString(); 
} 

if (path) 
    cookie_string += "; path=" + escape (path); 

if (domain) 
    cookie_string += "; domain=" + escape (domain); 

if (secure) 
    cookie_string += "; secure"; 

document.cookie = cookie_string; 




function get_cookie (cookie_name) 
{ 
var results = document.cookie.match ('(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); 

if (results) 
    return (unescape (results[2])); 
else 
    return null; 
} 

Когда кнопка нажата эта функция будет работать:

function Register() 
{ 
var username = document.getElementById("username").value; //Read the input value 
set_cookie("username", username, 2012, 12, 23); //Set the cookie 
document.write(get_cookie("username")); //Read the cookie 
} 

Всякий раз, когда я пытаюсь запустить это, функция get_cookie возвращает значение null. Это означает, что он, по крайней мере, успешно выполняется, но не находит cookie с именем «имя пользователя», хотя я только что создал его. Может ли кто-нибудь помочь?

+0

Каково значение 'document.getElementById (" username "). Value'? –

+0

Это то, что пользователь вводит в . – LonelyWebCrawler

+0

Ну, да. Но вы уверены, что имя пользователя задано (в javascript)? В основном, что такое значение 'username' в' var username = document.getElementById ("username"). Value; '? –

ответ

2

Вы говорите, что используете Chrome. Chrome (и Chromium) не разрешают установку или доступ к файлам cookie на локальных страницах в качестве преднамеренного решения проблем безопасности (см. http://code.google.com/p/chromium/issues/detail?id=535#c3). Код, который вы опубликовали, работает, если он помещен на сервер и отправлен, но не будет корректно вести себя, если вы откроете страницу из своей локальной системы в качестве файла: // URL. Вот почему работает jsfiddle.

Некоторые другие браузеры разрешают куки-файлы на локальных страницах, поэтому, если вы хотите поэкспериментировать с JavaScript и куки-файлами локально, вам может быть лучше попробовать один из них. Firefox позволяет им с ожидаемым поведением, хотя они и решили изменить его и могут делать в будущем. У Chrome также есть флаг командной строки --enable-file-cookie, который вы могли бы использовать во время тестирования, но они не рекомендуют его для повседневного использования.

Вы также можете разместить свою страницу на сервере и протестировать ее. Будет работать либо один из бесплатных хостинговых услуг, либо экземпляр Apache или аналогичный на вашем локальном компьютере. Важной частью является то, что страница доступна через HTTP.

+0

Спасибо, но я решил это уже;) – LonelyWebCrawler