Запись в куку, чтение с куки
Здравствуйте, несколько дней бьюсь над такой траблой.
Есть ссылка вида 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, время: 19:48. |