表单发布数据-保存到Cookie-从Cookie中读取

时间:2018-08-20 16:57:42

标签: javascript forms cookies save load

我有一个简单的html表单,包含大约20-30个字段,其中有两个按钮,一个是“保存”,另一个是“加载”。

我正在尝试一种方法,可以运行两个函数,一个函数将表单上的所有字段另存为cookie,另一个函数将所有字段从cookie加载回表单。

我设法将单个参数保存为表单中的cookie,但是我无法在数组中执行此操作。同样,我似乎无法拉出我尝试过的getcookie的每个保存的参数,但这不起作用,我必须使用document.cookie,因为setcookie也不起作用。

 document.cookie="firstname="+document.getElementById('firstname').value+"; expires=Thu, 18 Dec 2019 12:00:00 UTC";
 document.cookie="secondname="+document.getElementById('secondname').value+"; expires=Thu, 18 Dec 2019 12:00:00 UTC";

1 个答案:

答案 0 :(得分:0)

您使用什么方法将Cookie值设置为数组? document.cookie方法应仅使用字符串。这是设置和获取Cookie数组的简单方法:

function setCookieArray(cname, arrayValues, exdays) {
    var expires = "";
    if (exdays) {
      var d = new Date();
      d.setTime(d.getTime() + (exdays*24*60*60*1000));
      expires = ";expires="+ d.toUTCString();
    }
    var json_str = JSON.stringify(arrayValues);

    document.cookie = cname + "=" + json_str + expires + ";path=/";
}

function getCookieArray(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return JSON.parse(c.substring(name.length, c.length));
        }
    }
    return "";
}

您可以这样设置cookie:

setCookieArray("myTest1", ["a","b","c","d"], 3); //expires in 3 days

并获得如下所示的cookie数组:

getCookieArray("myTest1");