我正在尝试使用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);
}
}
&#13;
<form>
<input type="text" id="name" name="name" required="required">
<input type="button" onclick="checkCookie();" id="buttons" name="button" value="cookie">
</form>
&#13;
问题是,当我点击按钮时,它设置了Cookie(我看到它在&#39;查看网站信息&#39;,它就在那里)但是当我尝试使用getCookie
获取cookie时方法它没有显示cookie中保存的cookie值。此外,当我刷新页面并按下“查看网站信息”时,图标再次看到cookie,它显示0饼干。
这个代码有什么问题?或者我正在做的任何错误?
答案 0 :(得分:0)
您的按钮提交表单。如果您不需要提交表单,请不要使用form
标记,否则请将按钮放在其外部。或者,取消按钮单击的默认操作。
使用此HTML(不含form
),它可以正常工作:
<input id="name"><button onclick="checkCookie()">Check</button>
查看它在this fiddle
中运行如果您需要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>
请参阅fiddle。
当您通过file://
协议访问您的网页时,无法保证对Cookie的支持:它取决于浏览器。退房:
因此,请务必将网页放在网络服务器上。您可以在PC上安装一个,以防您不想将其实际放在互联网上。
或者,您可以决定使用localStorage
而不是Cookie。这样可以更好地支持file://
协议,并且语法更简单。