Запись в куку, чтение с куки
Здравствуйте, несколько дней бьюсь над такой траблой.
Есть ссылка вида site.net.com/?ref=R111 1. Как переменную R111 записать в куку? ,если: name=trud value=R111 Всё, что получилось <script language="JavaScript" type="text/javascript"> <!-- var ws=new Date(); ws.setDate(100+ws.getDate()); document.cookie="trud=R111; path=/; expires="+ ws.toGMTString(); //--> </script> но нужно, что бы R111 менялось на своё. Понимаю, что нужно задать условие, но не знаю как это реализовать. 2. Как потом значение с куки присвоить на странице конкретному полю? |
Прекрасная статья о том как пользоваться куками. А ещё лучше пользоваться локалсторджем
|
Цитата:
Пробовал вот это <script> function setCookie("trud", "R111", options) { options = options || {}; var expires = options.expires; if (typeof expires == "number" && expires) { var d = new Date(); d.setTime(d.getTime() + expires*1000); expires = options.expires = d; } if (expires && expires.toUTCString) { options.expires = expires.toUTCString(); } value = encodeURIComponent(value); var updatedCookie = name + "=" + value; for(var propName in options) { updatedCookie += "; " + propName; var propValue = options[propName]; if (propValue !== true) { updatedCookie += "=" + propValue; } } document.cookie = updatedCookie; } </script> Так писал - не работает. Или все поля name value нужно переименовывать на свои? И ещё вопрос, вот эта связка "name + "=" + value" , что в ней значит "=", это значение нужно менять? |
function setCookie(name, value, options) { options = options || {}; var expires = options.expires; if (typeof expires == "number" && expires) { var d = new Date(); d.setTime(d.getTime() + expires*1000); expires = options.expires = d; } if (expires && expires.toUTCString) { options.expires = expires.toUTCString(); } value = encodeURIComponent(value); var updatedCookie = name + "=" + value; for(var propName in options) { updatedCookie += "; " + propName; var propValue = options[propName]; if (propValue !== true) { updatedCookie += "=" + propValue; } } document.cookie = updatedCookie; } // возвращает cookie с именем name, если есть, если нет, то undefined function getCookie(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } setCookie("111", "222"); alert(getCookie("111")); |
tsigel, спасибо за скрипт, но нужно немного другое
Цитата:
Пробовал как R***, но не проходит в куке также отображается R***. |
den777,
Берём ссылку, копируем в текстовую переменную. С помощью магических операций с текстовыми переменными (их множество разных вариантов и реализаций (split, replace, indexOf и комбинции их применения)), убираем всё лишнее, оставив только значение. Придумываем имя и пишем в куку. Пример магической опирации: alert("site.net.com/?ref=R111".split("ref=")[1]); |
Чтение/Запись кукисов
<script type="text/javascript"> function setcOOkie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+ encodeURIComponent(b) +(c ? '; expires='+d.toUTCString() : '');else return false;} function getcOOkie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? decodeURIComponent(c[1]) : false;} var str = 'Привет Мир!' setcOOkie('hello_World',str,24*60*60*1000) //Параметры: Имя кука, данные, длительность хранения в ms //Проверка наличия кука: var a = getcOOkie('hello_World'); //Параметры: Имя кука, возвращает данные(если кука нет => false if(a) alert(a); </script> Если записываем в кук цифровые данные, то необходимо преобразовать в строчный формат var num = 0; setcOOkie('number','' + num,1000); //При чтении преобразуем назад в цифру: var a = getcOOkie('number'); if(a)a = parseFloat(a); Стирание Кука: - Записываем true в данные и отрицательное число в пункт время setcOOkie('foo',true,-1000); ============== К сожалению обрезан патч, посколь у меня на сервисе не актуально |
function guteLink(a) { return a.replace(/.*?\/\?ref=([^\/]+).*$/g,'$1').split(/\/|#/)[0]; } var lnk = "site.net.com/?ref=R111"; alert(guteLink(lnk) ) var lnk = "site.net.com/?ref=R111#post11"; alert(guteLink(lnk) ) var lnk = "site.net.com/?ref=R111/file/#post11"; alert(guteLink(lnk) ) |
Часовой пояс GMT +3, время: 01:40. |