【问题标题】:Store Form Values In Cookie将表单值存储在 Cookie 中
【发布时间】:2012-05-21 18:11:22
【问题描述】:

在过去的几个小时里,我一直在尝试自学 cookie 以及如何将一些表单字段中的值存储到 cookie 中。

我运气不佳,我发现的所有示例都没有太大帮助。 我应该使用 PHP 还是 JS 生成它们? 任何反馈或正确方向的踢球将不胜感激!

http://jsfiddle.net/yucM7/

提前致谢!

【问题讨论】:

  • 在 cookie 中存储表单值没有多大意义。你的最终目标是什么?最好将它们存储在会话中。

标签: php javascript forms cookies setcookie


【解决方案1】:

这是example

您只需要 jQuery 和 cookie plugin

请记住,html 代码有几处更改。

$(document).on('submit', '#myForm', function() {
   // serialize our form (get string containing field names and values)
   dataString = $(this).serialize();
   // set new cookie
   $.cookie('formCookie', dataString);
   return false;
});

$(document).on('click', '#getCookie', function() {
   // get serialized string from cookie    
   cookieData = $.cookie('formCookie');
   // if cookie exists continue
   if (cookieData != null) {
        // split cookieData string into an array of fields and their values
        cookieArray = cookieData.split('&');
        // go through each field and split it too to get field name and it's value
        $.each(cookieArray, function(k, v) {
          field = v.split('=');
          // populate field with data
          $('#myForm [name="'+field[0]+'"]').val(field[1]);
        });
    }
   return false;
});

【讨论】:

  • 嗨,Kane,非常感谢您提供的示例,cmets 非常棒。如果我不想将所有字段值存储在表单中,我将如何处理。例如我只想存储名字和姓氏?
  • @Jamesil,这是上面代码的修改版本:jsfiddle.net/Xxqb6/3。基本上,对于您添加类的每个输入字段或任何其他字段,在我的示例中它是“子集”,然后您只需使用相同的 serialize() 函数,但我们将使用 $(this).serialize() 而不是使用 $(this).serialize() ('.subset').serialize();
  • 干杯!!那运作良好。最后一个问题。如果我在一个字段(用于电子邮件地址)中输入一个“@”并将其保存到 cookie,它会返回一个“%40”。我该如何防止这种情况发生??
  • @Jamesil,添加一个 if else 检查字段名称是否与电子邮件相关,然后而不是使用 val(field[1]);使用 val(decodeURIComponent(field[1]));
  • 工作就像一个魅力!但是字段中的空格正在被解码,它们仍然以“+”符号出现。我认为 val(decodeURIComponent(field[1]));会修复所有字符和空格的解码吗?
【解决方案2】:

您可以通过以下方式使用 Javascript 设置 cookie(请参阅 http://www.w3schools.com/js/js_cookies.asp):

function setCookie(c_name,value,exdays)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}

使用 Jquery 设置 cookie: $.cookie("example", "foo");

或者,您可以通过以下方式从服务器设置 cookie:

<?php
    $value = 'something from somewhere';
    setcookie("TestCookie", $value);

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2021-01-04
    相关资源
    最近更新 更多