我正在尝试使用 JavaScript 添加和检索 cookie。我的代码是
function setCookie(name,value,days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
document.cookie = name + "=" + value + expires + ";";
alert("Hello you are : "+getCookie(name)); // displaying alert message 'Hello you are :'
}
function getCookie(cname) { //any problem with this code?
var rcookies = document.cookie;
var cookiearray = rcookies.split(";");
for (i=0;i<cookiearray.length;i++){
var value=cookiearray[i];
value=value.split("=");
if(value[0]==cname){
return value[1];
}
}
return "";
}
function checkCookie() {
var user = getCookie("user");
if (user != "") {
alert("You are " + user); // This alert is Never displayed But it need to be.
} else {
user = document.getElementById("name").value;
alert(user); // displaying the value of text field
setCookie("user", user, 1);
}
}
<form>
<input type="text" id="name" name="name" required="required">
<input type="button" onclick="checkCookie();" id="buttons" name="button" value="cookie">
</form>
问题是当我单击它设置的 cookie 按钮时(我在“查看站点信息”中看到它,它就在那里)但是当我尝试使用getCookie
方法获取 cookie 时,它没有显示保存在 cookie 中的 cookie 值。而且,当我刷新页面并按“查看站点信息”图标再次查看 cookie 时,那里显示 0 个 cookie。代码有什么问题?还是我做错了什么?
您的按钮提交表单。如果您不需要提交表单,则不要使用该form
标签,否则将按钮放在它之外。或者,取消按钮单击的默认操作。
使用此 HTML(没有form
)它可以正常工作:
<input id="name"><button onclick="checkCookie()">Check</button>
看到它在这个小提琴中运行
如果需要form
标签,则通过return false
在onclick
属性中添加来取消点击的默认效果:
<form>
<input type="text" id="name" name="name" required="required">
<input type="button" onclick="checkCookie();return false;" id="buttons" name="button" value="cookie">
</form>
见小提琴。
当您通过file://
协议访问您的网页时,不能保证对 cookie 的支持:这取决于浏览器。查看:
所以一定要把你的网页放在网络服务器上。您可以在您的 PC 上安装一个,以防您不想将其实际放置在 Internet 上。
或者,您可以决定使用localStorage
cookie 代替。这对file://
协议有更好的支持,并且无论如何都有更简单的语法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句