Проблема с Javascript и Cookies - PullRequest
3 голосов
/ 22 июня 2011

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

Я собираюсь использовать эти две функции с сайта 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 возвращает ноль.Это означает, что он по крайней мере успешно запускается, но не находит ни одного файла cookie с именем «username», хотя я только что его создал.Кто-нибудь может помочь?

1 Ответ

2 голосов
/ 06 июля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...