Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2014, 13:36
Новичок на форуме
Отправить личное сообщение для den777 Посмотреть профиль Найти все сообщения от den777
 
Регистрация: 24.01.2014
Сообщений: 3

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

Последний раз редактировалось den777, 24.01.2014 в 13:40.
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2014, 13:45
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Прекрасная статья о том как пользоваться куками. А ещё лучше пользоваться локалсторджем
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2014, 14:01
Новичок на форуме
Отправить личное сообщение для den777 Посмотреть профиль Найти все сообщения от den777
 
Регистрация: 24.01.2014
Сообщений: 3

Сообщение от tsigel Посмотреть сообщение
Прекрасная статья о том как пользоваться куками.
Открыта эта страница
Пробовал вот это
<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" , что в ней значит "=", это значение нужно менять?

Последний раз редактировалось den777, 24.01.2014 в 14:03.
Ответить с цитированием
  #4 (permalink)  
Старый 24.01.2014, 14:23
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

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"));
Ответить с цитированием
  #5 (permalink)  
Старый 25.01.2014, 04:38
Новичок на форуме
Отправить личное сообщение для den777 Посмотреть профиль Найти все сообщения от den777
 
Регистрация: 24.01.2014
Сообщений: 3

tsigel, спасибо за скрипт, но нужно немного другое
Сообщение от den777 Посмотреть сообщение
Здравствуйте, несколько дней бьюсь над такой траблой.
Есть ссылка вида site.net.com/?ref=R111


1. Как переменную R111 записать в куку?
Мне нужно, что бы записывалось в куки значение после /?ref= В примере это R111, но оно изменяется, в следующий раз это может быть R261 или R857 и т.д. Как именно сформировать условие, что бы любое значение после /?ref= записывалось в куку?
Пробовал как R***, но не проходит в куке также отображается R***.

Последний раз редактировалось den777, 25.01.2014 в 04:41.
Ответить с цитированием
  #6 (permalink)  
Старый 27.01.2014, 19:21
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

den777,
Берём ссылку, копируем в текстовую переменную. С помощью магических операций с текстовыми переменными (их множество разных вариантов и реализаций (split, replace, indexOf и комбинции их применения)), убираем всё лишнее, оставив только значение. Придумываем имя и пишем в куку.

Пример магической опирации:

alert("site.net.com/?ref=R111".split("ref=")[1]);

Последний раз редактировалось tsigel, 27.01.2014 в 19:24.
Ответить с цитированием
  #7 (permalink)  
Старый 27.01.2014, 23:52
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Чтение/Запись кукисов


<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);

==============
К сожалению обрезан патч, посколь у меня на сервисе не актуально

Последний раз редактировалось Deff, 27.01.2014 в 23:54.
Ответить с цитированием
  #8 (permalink)  
Старый 27.01.2014, 23:59
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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) )

Последний раз редактировалось Deff, 28.01.2014 в 00:23.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с кодом сохранения параметром CheckBox-ов в куки Konstantine jQuery 0 26.05.2012 16:20
Чтение и запись файла kilogram Серверные языки и технологии 0 16.05.2012 23:59
Матрица JS запись и чтение из матрицы greg_zel Общие вопросы Javascript 9 04.05.2012 19:55
Одно событие во всех окнах одного домена kdn1990 Events/DOM/Window 18 25.04.2012 20:11
Чтение и запись с txt или csv файла vitaver AJAX и COMET 0 23.12.2010 20:43