创建一个JavaScript cookie

时间:2015-08-06 18:02:03

标签: javascript jquery cookies

我正在尝试创建一个cookie。我怀疑我的cookie没有保存或正确检索。我做错了什么?

我尝试了2种方法来保存这个cookie:

  1. Cookie会保存在此函数中:

    function(config) {
        var config_copy = JSON.parse(JSON.stringify(config));
        setCookie('key',config_copy);
    }
    
  2. 使用setCookie();

    function(config) {
        var config_copy = JSON.parse(JSON.stringify(config));
        setCookie();
    }
    
  3. 然后触发此功能:

    function setCookie(key,config_copy){
        document.cookie = key + "=" + config_copy;
        console.log("cookie saved");
        console.log(config_copy);
    }
    

    console.log(config_copy);在控制台中返回undefined

    如何将config_copy的值正确保存到JavaScript Cookie中?

4 个答案:

答案 0 :(得分:2)

JSON.parse()返回一个对象,而不是JSON字符串。您应该将JSON字符串放入cookie中,而不是JSON.parse的结果。

function saveConfig(config) {
    var config_copy = JSON.stringify(config);
    setCookie("key", config_copy);
}

否则,您只需将Cookie设置为[Object object]

答案 1 :(得分:1)

Document.cookie只接受primitive values,如果您传递的是调用Object.toString()的对象,该对象会返回[ object Object ]

您也可以选择以cookie形式存储对象。

  1. 来自对象属性的多个cookie

    如果你想从一个对象的每个属性中创建一个cookie,你必须遍历该对象并从每个属性中创建一个cookie。

    var saveConfig = function(config) {
        var cookies = [];
        for(var i in config)
            cookies.push(document.cookie = i + '=' + config[i]);
        return cookies;
    }
    saveConfig({hello: 'world', foo: 'bar'});
    console.log(document.cookie);
    
    Outputs: hello=world; foo=bar;
    
  2. 来自对象的一个​​cookie转换为字符串

    您可以将对象转换为字符串,并使用JSON.stringify()将其存储在一个Cookie中。

    var saveConfig = function(config) {
        return document.cookie = 'config=' + JSON.stringify(config);
    }
    saveConfig({hello: 'world', foo: 'bar'});
    console.log(document.cookie);
    
    Outputs: config={"hello":"world","foo":"bar"};
    

答案 2 :(得分:0)

在你的第二个"选项"你必须发送这样的参数值:

userList.OrderByDescending(x => x.startTime).ThenBy(x => x.groupId).ToList();

如果您在没有参数的情况下调用它,它们将具有function(config) { var config_copy = JSON.parse(JSON.stringify(config)); setCookie("key", config_copy); }

答案 3 :(得分:-1)

您需要将变量传递给setCookie()才能使函数使用它们。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Calling_functions