如何通过Cookie存储和重新加载动态表单

How to store and reload a dynamic form via cookies?

本文关键字:加载 动态 表单 新加载 Cookie 何通过 存储      更新时间:2023-09-26

我有一个表单,用户可以向其中添加行。提交该表单时,我需要将这些值存储在cookie中,以便在页面刷新或用户离开网站返回时重新加载表单。我已经得到了从javascript构建的表单,并且正在寻找某种能够自动存储和重新加载表单的js或php工具,包括dya=namic生成表单。

谢谢!

似乎您应该能够使用jquery内置的表单序列化程序,然后将其保存在cookie中。

//here's a little helper function to set a cookie
function setCookie(key, value, daysUntilExpiration) {
    var expiration = new Date();
    expiration.setTime(expiration.getTime()+(daysUntilExpiration*86400000));
    document.cookie = key + "=" + value + ";expires=" + expiration.toGMTString() + ";path=/";
}
//first, get the serialized data from your dynamic form
var formData = $("#myform").serialize();
//then, save it into a cookie
setCookie("myform", formData, 30); //cookie saved for 30 days

要将其拉回来,您应该能够简单地在键/值上进行拆分,并将"="作为拆分字符,然后循环遍历每个键/值,构建表单HTML。

您可以使用PHP的setcookie()函数来保存这些。以下是一些简单的函数,可以执行您想要的操作。但是,这只适用于具有值的输入。它将不适用于选择。请确保每个输入都有不同的名称,否则这将不起作用。

function SaveAll() {
    $cookie_expires = 14; // how many days until the cookies expire
    foreach($_POST as $col => $val) {
        setcookie("form_".strtolower($col), $val, time()+(64000 * $cookie_expires));
    }
}
function Load($item) {
    $item = strtolower($item);
    if(!$_COOKIE['form_'.$item]) return null;
    return $_COOKIE['form_'.$item];
}
if($_POST['submit_button_name']) {
    SaveAll();
    echo "All inputs have been saved! <BR><BR>";
}

然后简单地将这样的内容添加到您的所有输入中。

<input name="Item01" value="<?=Load('Item01');?>" />