Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не сохраняются cookie (https://javascript.ru/forum/misc/78289-ne-sokhranyayutsya-cookie.html)

Malleys 23.08.2019 10:48

Цитата:

Сообщение от ksa
Для работы с куками больше подходят вот такие функции

Печеньки вообще не подходят для того, чтобы хранить данные, поскольку то, что вы туда сохраняете, передаётся на сервер с каждым запросом. Для хранения данных локально используйте localStorage. Читайте об этом в учебнике Ильи Кантора на русском языке: https://learn.javascript.ru/localstorage

Цитата:

Сообщение от ksa
Я пытался максимально сохранить идею автора.

А ему как раз-таки нужна новая идея, а то в чём смысл вопроса. Да и он вам написал, что в вашем коде cookie тоже работают только в сессии.

ksa 23.08.2019 12:14

Цитата:

Сообщение от Malleys
А ему как раз-таки нужна новая идея

Ты спец - тебе видней...

АндрейD 23.08.2019 20:10

Цитата:

Сообщение от Malleys
АндрейD, вы поняли, что поменял в вашем коде ksa в посте №4?

Это я понял. Не понял только, где это "волшебное место" в коде, которое делает его другим. А за localStorage спасибо, но меня зацепила именно невозможность сохранения сookie после закрытия браузера.

АндрейD 23.08.2019 20:12

Цитата:

Сообщение от ksa
Я пытался максимально сохранить идею автора.
Дабы он увидел, что он делал не так.

Я не этого не увидел, и прошу вас, мне указать на мои промахи.

АндрейD 23.08.2019 20:18

Цитата:

Сообщение от Rise (Сообщение 512040)
АндрейD,
куки могут не работать, если протокол в адресной строке file://, а не http://, т.е. нужно эмулировать сайт.

Про "протокол" - это интересно. Но, думаю, избыточно сложно, для такой задачи. Впрочем иного решения у меня пока нет. Спасибо.

АндрейD 23.08.2019 21:03

Функцию getCookie() можно вообще не писать. Для сессии достаточно этого:
<body>
		<p>Фамилия</p>
		<input type="text" value="" id="surname">
		<p>Имя</p>
		<input type="text" value="" id="name">
		<p>Отчество</p>
		<input type="text" value="" id="parent">
</body>

var inp = document.querySelectorAll('input');
document.addEventListener('input', setCookie);

function setCookie() {
	var date = new Date();
	date.setDate(date.getDate() + 1);
	date = date.toGMTString();		// toUTCString
	for(var i = 0; i < inp.length; i++) {
		document.cookie = inp[i].getAttribute('id') + "=" + inp[i].value + '; path=/ ; expires=' + date;
	}
}

Значит загвоздка в невозможности браузером сохранить cookie после закрытия. Похоже наводка Rise о протоколах верна.


Часовой пояс GMT +3, время: 03:48.