1

Тема: JS: не работают куки

В web программировании недавно, где-то неделю)
Застрял на этом коде, куки никак не могу добавить. В чем ошибка?

+ цветной код

http://i.imgur.com/xEFlhCa.png


var CookieManager = {
    set: function (name, value, days) {
         var expires = "";
          if (days) {
              var d = new Date();
              d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000));
              expires = "; expires=" + d.toGMTString();
          }
          document.cookie = name + "=" + value + expires + "; path=/";
          return this.get(name);
    },
    get: function (name) {
          name += "=";
          var b = document.cookie.split(';'), c;
          for (var i = 0; i < b.length; i++) {
              c = b[i].replace(/(^\s+)|(\s+$)/g, "");
              while (c.charAt(0) == ' ') 
                   c = c.substring(1, c.length);
              if (c.indexOf(name) == 0) 
                   return c.substring(name.length, c.length);
          }
          return null;
    },
    remove: function (name) {
          this.set(name, "", -1);
    }
};



$(document).ready(function() {
	var cookie = CookieManager.get("connect");
	alert(document.cookie + "\n" + cookie);
	if(cookie == null)
	{
		cookie = 1
		alert(cookie + "\n" + CookieManager.set("connect", cookie, 7));
	}
});

2 (изменено: svoboden, 2017-09-08 13:20:55)

Re: JS: не работают куки

Может, автоматически удаляются через определенное время, а может, в браузере запрещены куки. Так попробуй:

// возвращает cookie с именем name, если есть, если нет, то undefined
function getCookie(name) {
  var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}

// устанавливает cookie с именем name и значением value
// options - объект с свойствами cookie (expires, path, domain, secure)
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
function deleteCookie(name) {
  setCookie(name, "", {
    expires: -1
  })
}

Здесь про куки можно прочитать.

3

Re: JS: не работают куки

Все равно не работает. Проверял тремя браузерами с включенными куками - ничего. Пришлось даже ie впервые открыть, жуть...
использовал вот этот код:


setCookie("connect", 1, {"expires" : 1});
var cookie = getCookie("connect");
alert("cookie:" + document.cookie + "\n" + cookie);

Куки: undefined.

4 (изменено: svoboden, 2017-09-08 20:44:02)

Re: JS: не работают куки

Вот так у меня добавляет куки:

document.cookie = "userName=Vasya";

, если надо узнать их, то:

alert( document.cookie );

5 (изменено: MandarinKa02, 2017-09-08 22:28:00)

Re: JS: не работают куки

Странная штука
http://i.imgur.com/1vX0Hqp.png

http://i.imgur.com/jvwXF0S.png

UP: почистил весь js скрипт и оставил только эту функцию и всё равно пустоту выводит :\

6

Re: JS: не работают куки

Т.к. еще сильно туп в веб, похоже понял в чем причина. Я запускал свою страницу напрямую, т.е. просто открывал файл .html в браузере, что не допустимо.
Думаю проблема с куками решится когда запущу страничку через сервер.

7

Re: JS: не работают куки

Вопрос решен.
Надо через сервер запускать страничку, тогда куки будут сохранятся.