Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中创建具有多个值的cookie_Javascript_Jquery_Html_Cookies - Fatal编程技术网

Javascript 如何在jQuery中创建具有多个值的cookie

Javascript 如何在jQuery中创建具有多个值的cookie,javascript,jquery,html,cookies,Javascript,Jquery,Html,Cookies,我在创建和获取包含多个值的cookie时遇到一些问题。 好的,我想做的是,当点击提交按钮时,创建一个带有表单输入值的cookie。然后,当同一用户再次访问该站点时,表单将自动填充用户上次键入的内容 我的html: <form id="formen"> <fieldset> <legend>Login</legend> <label for="firstname" class="label">Firstname</l

我在创建和获取包含多个值的cookie时遇到一些问题。 好的,我想做的是,当点击提交按钮时,创建一个带有表单输入值的cookie。然后,当同一用户再次访问该站点时,表单将自动填充用户上次键入的内容

我的html:

<form id="formen">
<fieldset>
    <legend>Login</legend>
    <label for="firstname" class="label">Firstname</label>
    <input type="text" name="firstname" id="firstname" class="text" maxlength="30" />
    </br></br>
    <label for="lastname" class="label">Lastname</label>
    <input type="text" name="lastname" id="lastname" class="text" maxlength="30" />
    </br></br>
    <label for="lastname" class="label">Address</label>
    <input type="text" name="third" id="address" class="text" maxlength="30" />
    </br></br>
    <label for="lastname" class="label">City</label>
    <input type="text" name="city" id="city" class="text" maxlength="30" data-sayt-exclude/>
    </br></br>
    <label for="lastname" class="label">Zipcode</label>
    <input type="number" name="zipcode" id="zipcode" class="text" maxlength="30" />
    </br></br>
    <label for="lastname" class="label">E-mail</label>
    <input type="email" name="email" id="email" class="text" maxlength="30" />
    </br></br>
    <label for="lastname" class="label">Phone</label>
    <input type="number" name="phone" id="phone" class="text" maxlength="30" />
    </br></br>
    <input type="submit" name="submit" value="Remember Me" id="remember"/>
</fieldset>
</form>
这段代码实际上做到了这一点。它保存不同的输入值,并在用户重新访问站点时自动填充

唯一的问题是我不想为每个输入值创建一个新的cookie。 是否可以只创建一个包含每个输入值的cookie,并让它自动填充不同的输入字段

希望有人能帮助我!我想不出来。。
Thx

在保存cookie之前将表单值连接成字符串,并在必须分配cookie时进行拆分。 这些是我用来连接和拆分的函数:

    var splitQueryString = function (q) {
        var pars = q.split("&");
        var qq = {};
        var i = 0;
        for (i = 0; i < pars.length; i++) {
            var ret = pars[i].toString().split("=");
            qq[ret[0]] = decodeURIComponent(ret[1]);
        }
        return qq;
    };

    var getQueryString = function (pars) {
        var q = '';
        var value;
        var key;
        for (key in pars) {
            if (pars.hasOwnProperty(key)) {
                value = pars[key];
                if (!(value === null)) {
                    q += "&" + key + "=" + encodeURIComponent(value);
                }
            }
        }

        if (q.length > 0) {
            //remove first
            q = q.substr(1);
        }

        return q;
    };

在保存cookie之前将表单值连接到字符串中,并在必须分配cookie时进行拆分。 这些是我用来连接和拆分的函数:

    var splitQueryString = function (q) {
        var pars = q.split("&");
        var qq = {};
        var i = 0;
        for (i = 0; i < pars.length; i++) {
            var ret = pars[i].toString().split("=");
            qq[ret[0]] = decodeURIComponent(ret[1]);
        }
        return qq;
    };

    var getQueryString = function (pars) {
        var q = '';
        var value;
        var key;
        for (key in pars) {
            if (pars.hasOwnProperty(key)) {
                value = pars[key];
                if (!(value === null)) {
                    q += "&" + key + "=" + encodeURIComponent(value);
                }
            }
        }

        if (q.length > 0) {
            //remove first
            q = q.substr(1);
        }

        return q;
    };

通过将对象转换为字符串来存储数据

var obj = {
    "firstname" : $("#firstname").val(),
    "lastname" : $("#firstname").val()
};
$.cookie('data', JSON.stringify(obj), { expires: date });
当你读出来的时候:

var data = $.cookie("data"),
    obj = data ? JSON.parse(data) : "";
Object.keys(obj).forEach(function(key){
    $("#" + key).val(obj[key]);
});

就我个人而言,我会使用本地存储,而不是cookie。

通过将对象转换为字符串来存储数据

var obj = {
    "firstname" : $("#firstname").val(),
    "lastname" : $("#firstname").val()
};
$.cookie('data', JSON.stringify(obj), { expires: date });
当你读出来的时候:

var data = $.cookie("data"),
    obj = data ? JSON.parse(data) : "";
Object.keys(obj).forEach(function(key){
    $("#" + key).val(obj[key]);
});

就我个人而言,我会使用localstorage而不是cookie。

localstorage可能是比cookie更好的解决方案。基本上,您希望对对象进行字符串化。localstorage可能是比Cookie更好的解决方案。基本上你想要字符串化一个对象。我正在尝试使用你的代码来设置cookie。我在控制台中不断收到一个“UncaughtTypeError:Cannotreadproperty'split'of undefined”错误。你知道为什么它不起作用吗?@Colin你在你的项目上安装了“cookie”jquery插件吗?是的,安装了cookie插件的1.4.1版。可能是其他原因吗?原因是cookie必须已设置。我的代码是基于问题代码的示例。这是一个有效的示例投票我的答案如果现在有效当我使用小提琴时,我在控制台中得到这些错误:Uncaught ReferenceError:$firstnameVariable未定义,Uncaught TypeError:无法读取undefined的属性“split”-这是在我从Chrome中清除了JSFIDLE.net的所有cookie之后发生的。我正在尝试使用您的代码设置cookie。我在控制台中不断收到一个“UncaughtTypeError:Cannotreadproperty'split'of undefined”错误。你知道为什么它不起作用吗?@Colin你在你的项目上安装了“cookie”jquery插件吗?是的,安装了cookie插件的1.4.1版。可能是其他原因吗?原因是cookie必须已设置。我的代码是基于问题代码的示例。这是一个有效的示例投票我的答案如果它现在有效当我使用fiddle时,我在控制台中得到以下错误:UncaughtReferenceError:$firstnameVariable未定义,UncaughtTypeError:无法读取undefined的属性“split”–这是在我从Chrome中清除了JSFIDLE.net的所有cookie之后发生的。