Нужен Javascript-эквивалент этого кода C # для добавления значений в cookie - PullRequest
0 голосов
/ 30 июля 2010

Мне нужна помощь в создании необходимого Javascript для добавления значений в существующий файл cookie. Я знаю, как сделать это в C #, но в этом сценарии это нужно сделать в Javascript.

Это код C #:

HttpCookie myCookie = HttpContext.Current.Request.Cookies["SiteSettings"];
myCookie.Values.Add(varName, varValue);
myCookie.Expires = DateTime.Now.AddYears(1);
HttpContext.Current.Response.Cookies.Add(myCookie);

Может кто-нибудь помочь мне преобразовать это в Javascript? Я искал высоко и низко в Интернете, и в большинстве уроков нет способа указать cookie (на этом сайте более одного cookie)

Большое спасибо, Andrew

Ответы [ 5 ]

4 голосов
/ 30 июля 2010

Не уверен, где вы искали, поскольку первая статья в Google о "cookie-файлах javascript" - это отличная статья от ppk: http://www.quirksmode.org/js/cookies.html

Она должна ответить на ваш вопрос и объяснить другие файлы cookie, связанные с JS.-nuances, включая примеры функций для обработки файлов cookie более разумным способом, чем конкатенация строк.

2 голосов
/ 30 июля 2010

Я верю:

document.cookie= varName + "=" + varValue + ";expires=" + new Date().toUTCString;

Это, однако, устанавливает время истечения до настоящего времени. Я не знаю, как добавить к этому год.

1 голос
/ 30 июля 2010

Я предлагаю вам взглянуть на этот плагин jQuery: http://plugins.jquery.com/project/cookie. Делает манипулирование cookie очень простым, и он безопасен для всех браузеров.

1 голос
/ 30 июля 2010

Хорошая информация об обработке файлов cookie в javascript: http://www.quirksmode.org/js/cookies.html

// from your example

var myCookie = readCookie("SiteSettings");
createCookie(varName, varValue, 365);

// from http://www.quirksmode.org/js/cookies.html

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}
0 голосов
/ 30 июля 2010

Это будет работать и даст желаемый результат

var d = new Date();

document.cookie= varName + "=" + varValue + ";expires=" 
    + new Date((d.getFullYear()+1), d.getMonth(), d.getUTCDate()).toUTCString());

см. Статью

Javascript - Cookies

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