使用Javascript获取cookie值时出错

时间:2017-11-04 10:12:55

标签: javascript cookies

我正在尝试使用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;
&#13;
&#13;

问题是,当我点击按钮时,它设置了Cookie(我看到它在&#39;查看网站信息&#39;,它就在那里)但是当我尝试使用getCookie获取cookie时方法它没有显示cookie中保存的cookie值。此外,当我刷新页面并按下“查看网站信息”时,图标再次看到cookie,它显示0饼干。 这个代码有什么问题?或者我正在做的任何错误?

1 个答案:

答案 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://协议,并且语法更简单。

相关问题