我正在尝试保存Cookie然后重新加载
我有这段代码
<html>
<head>
<script>
var myCookies = {};
function saveCookies()
{
myCookies["_uuser"] = document.getElementById("user").value;
myCookies["_uuage"] = document.getElementById("age").value;
//Start Reuseable Section
document.cookie = "";
var expiresAttrib = new Date(Date.now()+60*1000).toString();
var cookieString = "";
for (var key in myCookies)
{
cookieString = key+"="+myCookies[key]+";"+expiresAttrib+";";
document.cookie = cookieString;
}
//End Reuseable Section
document.getElementById("out").innerHTML = document.cookie;
}
function loadCookies()
{
//Start Reuseable Section
myCookies = {};
var kv = document.cookie.split(";");
for (var id in kv)
{
var cookie = kv[id].split("=");
myCookies[cookie[0].trim()] = cookie[1];
}
//End Reuseable Section
document.getElementById("user").value = myCookies["_uuser"];
document.getElementById("age").value = myCookies["_uuage"];
}
</script>
</head>
<body>
User: <input type="text" id="user">
Age: <input type="text" id="age">
<button onclick="saveCookies()">Save To Cookies</button>
<button onclick="loadCookies()">Load From Cookies</button>
<p id="out"></p>
</body>
</html>
当我输入名称和年龄的输入时,点击保存到cookie, 然后从cookie中加载时钟,我得到了用户和年龄的“未定义”!!
我的代码中缺少什么,所以我可以保存cookie
答案 0 :(得分:1)
对于Chrome,只有在网页服务器上运行网页时才能设置Cookie。
例如,通过http://localhost/foo/bar.html
或http://127.0.0.1/foo/bar.html
修改:您可以查看以下答案: where cookie saved for local HTML file 我自己测试了它:它适用于Firefox。
否则,最好是测试此类案例,建立像apache这样的本地网络服务器
答案 1 :(得分:0)
我已经从网络服务器测试了您的代码,它运行正常。
您必须从Web服务器加载,而不是从本地文件系统加载。
如果你想为自己证明,JSFiddle就在这里。
https://jsfiddle.net/brx5ropp/
请注意,由于JSFiddle限制,我不得不将按钮的单击触发器移动到这样的代码:
document.getElementById("load").addEventListener("click", loadCookies);
document.getElementById("save").addEventListener("click", saveCookies);
......但这与我的答案无关!