在Cookie JavaScript中存储空格和冒号

时间:2017-05-30 19:28:34

标签: javascript html cookies

我正在创建一个网页,其中包含一个表单,用于保存您在Cookie中输入的数据,以防您在提交之前意外关闭标签或离开。

我想知道是否有办法允许空格和冒号进入我的cookie数据?例如,如果用户键入“test test”,则刷新时cookie将被存储并显示为“test%2520test”。类似地,冒号显示为“%3A”。我相信这可以使用encodeURIComponent,但我不确定如何。下面我将包括我的saveVideo, setCookie, and readCookie JS函数以及示例输入字段。

此外,红利问题:提交表单后删除每个Cookie数据的最佳方式是什么?

<input id="video" name="video" type="text" onchange="saveVideo(this.value);"/>
function saveVideo(cookieValue)
        {
            var sel = document.getElementById('video');

            saveclass = saveclass ? saveclass : document.body.className;
            document.body.className = saveclass + ' ' + sel.value;

            setCookie('video', cookieValue, 1   );
        }   


function setCookie(cookieName, cookieValue, nDays) {
            var today = new Date();
            var expire = new Date();

            if (nDays==null || nDays==0)
                nDays=1;

            expire.setTime(today.getTime() + 60 * 60 * 1000);
            document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
        }


function readCookie(name) {
          var nameEQ = name + "=";
          var ca = document.cookie.split(';');
          for(var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
          }
          return null;
        }

        </script>

非常感谢任何提示,指示,一般帮助!

1 个答案:

答案 0 :(得分:1)

只需使用decodeURIComponent

将代码更改为readCookie函数中的以下内容即可
return decodeURIComponent(c.substring(nameEQ.length, c.length));