2010-05-25 2 views
3

Я знаю, как писать/создавать файлы cookie в JavaScript ................................. ........................Чтение файлов cookie с использованием JavaScript

//Create the cookies 
document.cookie = "Name=" + Name + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Surname=" + Surname + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Number=" + Number + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Email=" + Email + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Country=" + Country + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Company=" + Company + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 
document.cookie = "Title=" + Job + ";expires=Friday, 31-Dec-2011 12:00:00 GMT; path=/"; 

Но как я могу прочитать каждый из них в JavaScript, потому что я хочу заполнять текстовые поля в следующий раз пользователь придет к форме?

Я попытался это, но он не работает:

var cookieName = ReadCookie("Name"); 
document.getElementById('txtName').value = cookieName; 

Редактировать с Ответ:

Я использовал этот код ............... .....................

<script type="text/javascript"> 

function getCookie(c_name) 
{ 
    if (document.cookie.length>0) 
    { 
     c_start=document.cookie.indexOf(c_name + "="); 
     if (c_start!=-1) 
     { 
     c_start=c_start + c_name.length+1; 
     c_end=document.cookie.indexOf(";",c_start); 
     if (c_end==-1) c_end=document.cookie.length; 
     return unescape(document.cookie.substring(c_start,c_end)); 
     } 
    } 
    return ""; 
} 

function checkCookie() 
{ 
    Name = getCookie('Name'); 
    Surname = getCookie('Surname'); 
    Email = getCookie('Email'); 
    Company = getCookie('Company'); 
    Title = getCookie('Title'); 

    if (Email!=null && Email!="") 
     { 
     //Populate the text boxes.................................. 
     document.FormName.txtName.value = Name; 
     document.FormName.txtSurname.value = Surname; 
     document.FormName.txtEmail.value = Email; 
     document.FormName.txtCompany.value = Company; 
     document.FormName.txtjob.value = Title; 
     } 
    } 

</script> 

И называется функцией checkCookie(), как это из window.onload

<SCRIPT TYPE='text/javascript' LANGUAGE='JavaScript'><!-- // 

window.onload = initPage; 

function initPage() 
{ 
    checkCookie(); 

} 

// ->

Наслаждайтесь!

+4

http://www.quirksmode.org/js/cookies.html – Konerak

+1

@Kon - это гораздо лучшая ссылка, чем w3schools. –

+0

Eh, quirksmode в порядке ... но немного подробный со всей подстрокой - попробуйте http://leaverou.me/2009/12/reading-cookies-the-regular-expression-way/ – James

ответ

2

От http://w3schools.com/js/js_cookies.asp

набор печенья

function setCookie(c_name,value,expiredays) 
{ 
var exdate=new Date(); 
exdate.setDate(exdate.getDate()+expiredays); 
document.cookie=c_name+ "=" +escape(value)+ 
((expiredays==null) ? "" : ";expires="+exdate.toUTCString()); 
} 

получить печенье

function getCookie(c_name) 
{ 
if (document.cookie.length>0) 
    { 
    c_start=document.cookie.indexOf(c_name + "="); 
    if (c_start!=-1) 
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start); 
    if (c_end==-1) c_end=document.cookie.length; 
    return unescape(document.cookie.substring(c_start,c_end)); 
    } 
    } 
return ""; 
} 
+0

это действительно не работает вообще –

0

Ссылаясь на document.cookie, вы получаете целую цепочку файлов cookie. Они разделены точкой с запятой.

var cookies = document.cookie.split(';'); // "cookies" will be an array 

Вы могли бы сделать, что объект с Name-> отображение значения:

var cookieMap = {}; 
for (var i = 0; i < cookies.length; ++i) { 
    cookies[i].replace(/^\s*([^=]+)=(.*)$/, function(_, name, val) { 
    cookieMap[name] = unescape(val); 
    }); 
} 

Теперь вы можете посмотреть на печенье "MyCookie", как это:

var mycookieVal = cookieMap.mycookie; 

примечание Это редактировалось с момента его первоначальной сломанной версии - по-прежнему та же идея, но не на самом деле должна работать. Идея состоит в том, что цикл принимает каждую из частей document.cookie, которые были разделены точками с запятой, а затем дополнительно разбивает каждую из них на часть имени (материал перед «=», кроме ведущих пробелов) и часть «значение» (материал после «=» до конца части файла cookie). Затем значение сохраняется в «cookieMap» под заданным именем.

+0

Прохладный, но как мне получить индивидуальный? – Etienne

+0

Я просто расширил свой ответ - есть и другие предложения в других ответах, такие как функции для возврата определенных файлов cookie без необходимости создания карты. – Pointy

+0

Не работает ........ – Etienne

0

Это много * много * лучше ссылки, чем W3Schools (самый ужасный веб-ссылки когда-либо сделал):

Примеры, полученные из этих ссылок:

// sets the cookie cookie1 
document.cookie = 
'cookie1=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/' 

// sets the cookie cookie2 (cookie1 is *not* overwritten) 
document.cookie = 
'cookie2=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/' 

// remove cookie2 
document.cookie = 'cookie2=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/' 

Ссылка Mozilla даже имеет хорошую библиотеку печенья можно использовать.

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