Cookies устанавливаются с document.cookie
, однако они не отправляются на сервер (и, следовательно, не имеют никакого эффекта) до следующей загрузки страницы.Я бы предположил, что стандартное поведение document.cookie
состоит в том, чтобы имитировать это, а не обновлять значение чтения до следующей загрузки страницы (другими словами, установка document.cookie
устанавливает cookie, но чтение document.cookie
дает cookie, которые были отправлены вrequest).
IE9 исправил много проблем, присутствующих в старых версиях.И я имею в виду LOT .Это, скорее всего, один из них.Обходной путь, я полагаю, обрабатывает куки самостоятельно.Как и в PHP, у меня есть функция:
<?php
function setRealCookie( ... ) {
setcookie( ... );
$_COOKIE[...] = ...;
}
?>
В JavaScript вы можете создать объект, который отслеживает файлы cookie для вас, включая обновление самого себя, когда файл cookie установлен, и так далее.Что-то вроде:
(cookies = {
data: {},
init: function() {
var c = document.cookie.split(";"), l = c.length, i, t;
for( i=0; i<l; i++) {
t = c[i].split("=");
cookies.data[t.shift()] = t.join("=");
}
},
read: function(key) {
return cookies.data[key];
},
set: function(key,value) {
document.cookie = key+"="+value;
cookies.data[key] = value;
}
}).init();
Затем вы можете установить cookie с помощью cookies.set("qwe","1");
и прочитать его обратно с помощью cookies.read("qwe");
.