js中的Cookie帮助?

时间:2014-12-26 08:56:36

标签: javascript cookies

好的,我已经为cookie保存了两个功能:

设置Cookie:

function setCookie(cname, cvalue) {
    document.cookie.concat(" " + cname + "=" + cvalue + ";");
    console.log("Saved cookie!");
}

加载Cookie:

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
        if (document.cookie.indexOf(cname) > 0) {
            return document.cookie.substring(cname, (indexOf(";", indexOf(cname)) - 1));
        } else {
            return 0;
        }
    }
}

重置Cookie:

function resetCookies() {
        document.cookie = "";
}

然而,我的问题是,一旦你加载了一切;所有值都是0.

以下是我正在使用的代码的一些示例。 (因为我试图加载大约60个cookie,所以只需要更长时间阅读。)

function save() {
 clearCookies();
 setCookie("asdfghjklX", 10)
 setCookie("hiX", 20)
}

然后加载:(我在定义问题的脚本中定义了变量

function load() {
 hi = getCookie("hiX");
 asdfghjkl = getCookie("asdfghjklX", 20)
}

如果有人可以提供帮助那就太棒了,谢谢!

2 个答案:

答案 0 :(得分:0)

它会起作用,但是对于每个无用的请求(对服务器),将cookie发送到服务器并不是一个好主意。而是使用localStorage。

但是,如果您不想从客户端设置/删除Cookie,则可以使用mozilla(MDN)中的 library

你可以像这样设置一个cookie:

docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])

删除Cookie:

docCookies.removeItem(name[, path[, domain]])

获得价值:

docCookies.getItem(name)

答案 1 :(得分:0)

您的代码大部分都有效,您的问题就是

A)你正在用前面的空格保存cookie,即。 " hiX=20"

B)使用拆分数组ca,看看你的cookie是否已设置。

var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
    if (ca[i].indexOf(cname) > 0) {
        return ca[i];
    }
}

话虽如此,野外有很多图书馆可以在周日早上轻松处理饼干,例如https://github.com/ScottHamper/Cookies