1

首先让我描述一下场景。假设用户在我的站点中填写表单。该表单可能包含大约 14 个字段。现在完成 7 个字段后,他/她会错误地返回或关闭窗口或 pc 重新启动。

现在当他/她回来时,有没有办法向他展示 7 个字段已填满?现在要处理三种情况:

从主页返回 关闭窗口 重启电脑。

所有这些可能都没有解决方案。如果只能处理 1 和 2 的情况,那很好。

我知道会话,但到目前为止,我知道要在会话中保存一些内容,您需要提交站点或刷新,这不是我的重要案例。

所以我需要一个好方法来做到这一点?

实际上,我的网站将在每个表单中托管大约 20-40 个字段。因此,如果用户关闭选项卡或返回,为用户进行恢复非常重要。

4

4 回答 4

1

您还可以每 x 秒设置一次会话 VIA ajax。这样您就消除了刷新页面以保存会话值的问题。

setInterval(function(){
     $.post("/ajaxLogin.php",{
            value: $("#value").val()
        }, 
        function(result){
            console.log('saved!');
      });
}, 2000);

这是通过 ajax 调用的 ajaxLogin.php

<?php
    session_start();
    $_SESSION['value'] = $_POST["value"];
?>
于 2013-03-22T00:49:18.037 回答
1

在网络世界中,通常的做法是将数据保存在 Cookie 或会话中。Cookies 存储在用户的机器中,直到其到期日期到期,而 Sessions 通常具有较短的时间跨度(通常取决于服务器的会话生存时间)。

如果用户可以离开并稍后返回(即使在重新启动后),一种方法是将其保存到 cookie 中。为此,您可以在 PHP 中使用 setcookie 并序列化数据。

例子:

setcookie("UserFormData", serialize($_POST), time()+3600);  /* expire in 1 hour */

来自: http: //php.net/manual/en/function.setcookie.php

于 2013-03-22T00:49:52.093 回答
0

您可以使用Ajax将数据保存到会话...您不需要刷新..您可以在每个字段更新或任何时候进行 ajax 调用.. ajax 调用不需要等待表单提交.. 它可以在每次按键/按键时触发(尽管不推荐)

于 2013-03-22T00:48:25.143 回答
0

您可以创建一个 onchange 函数来创建/更新 cookie。您可以为每个输入设置一个特定的 cookie,假设您使用的是 PHP,并且我提供的链接中的函数可以执行以下操作:

<input type="text" name="username" onchange="SetCookie('username',this.value,1);" value="<?=$_COOKIE['username'];?>" />

这似乎很乏味,可能有更好的解决方案......

于 2013-03-22T00:50:58.860 回答