2013-03-22 40 views
1

首先让我描述一下这个场景。假设一位用户在我的网站中填写表单。该表格可能包含大约14个字段。现在,在完成7场比赛后,他/她错误地返回或关闭窗户或重新启动电脑。提交之前存储表单数据的最佳方法是什么?

现在他回来的​​时候有一种方法可以告诉他7个区域已经满了吗?现在有三种情况可以处理:

回到主页 关闭窗口 重新启动电脑。

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

我知道会议,但到目前为止,我知道要保存会议中的东西,您需要提交网站或刷新,这不是我可观的情况。

所以我需要一个很好的方式来做到这一点?

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

+0

你应该在一页一页的基础上存储数据,只有在X分钟没有更新之后才能“完成”。至少这就是我如何完成一个类似的任务,我有一个4页的工作网站加入过程。以会话ID为关键字存储page1数据,然后为其他页面进行更新。这样,如果用户返回或取消,您仍然可以获得一些数据。 – skrilled 2013-03-22 00:48:01

+0

我想我没有让你理解我的情况。我的问题是,如果用户填写表格的一半,并关闭它,那么我怎么实际上可以保存会话中的数据。如果用户在这种情况下提交,我可以将数据保存在会话中。 – 2013-03-22 04:33:57

回答

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

0

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

+0

这将很难保证所有数据都以这种方式保存。有些可能,但不一定是全部。但是,再有一些总比没有好。 – Coreus 2013-03-22 00:51:44

+0

如果在每个字段更新(更改)事件触发ajax调用,那么保存数据是有意义的,否则为什么要保存特定字段的“未完成”条目..有道理? – 2013-03-22 00:58:16

+0

保存现场更改例如更有意义,并且可能会使数据与用户有时间一样准确(在他/她关闭浏览器之前)或留下来执行其他操作。 – Coreus 2013-03-22 01:05:12

1

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

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

这是ajaxLogin.php是通过AJAX

<?php 
    session_start(); 
    $_SESSION['value'] = $_POST["value"]; 
?> 
0

您可以创建一个creates/updates a cookie一个onchange功能。您可以设置特定的Cookie为每个输入,假设你使用PHP和我所提供的链接的功能,你可以这样做:

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

这似乎将是非常乏味的,有可能是一个更更好的解决方案...

+1

会话存储和本地存储也是cookie的一个很好的选择,如果它可用的话,但是你想要在包含所有内容的单个JSON字符串上执行此操作... window.localStorage.setItem('idname',data) ; window.localStorage.getItem('idname'); https://developer.mozilla.org/en-US/docs/DOM/Storage – Scuzzy 2013-03-22 00:53:26

+0

我对JSON并不熟悉。所以我最好使用cookie或会话。 @Scuzzy – 2013-03-22 04:35:14

+0

SetCookie是一个默认函数?同样在这种情况下,如果我在输入框上进行更改并且不提交按钮,它会将值保存到cookie中? – 2013-03-22 04:37:56

相关问题