JavaScript - 在用户交互期间存储数据

时间:2010-04-20 15:42:02

标签: javascript jquery xml web-applications

我正在使用基于Web的表单构建器,它使用Jquery和PHP服务器端交互的混合。当用户构建表单时,我正在尝试确定在将所有数据发送到服务器之前存储其中一个表单项的最佳方法。我看了下面的方法

  1. Javascript数组
  2. XML文档
  3. 将每个表单项发送到服务器端以存储在会话中

4 个答案:

答案 0 :(得分:2)

好的,坏的和丑的

取决于您的应用程序功能和要求,但Javascript可能是最好的方法。你可以在javascript中使用数组或对象或其他任何东西。它是独立于服务器的,只要客户端会话保持存在(浏览器窗口不会因任何原因而关闭),它就会长时间保存数据,但这很容易避免(请查看我的最后一段)。

使用XML文档将是最糟糕的解决方案,因为客户端上的XML不像您想象的那样得到支持。

服务器端会话既好又坏。如果您不时存储中间结果,它们就可以了,所以如果客户端会话由于某种原因而结束,则用户不会丢失所有数据。但问题是它可能也会在服务器上过期。

如果我是你,我会使用Javascript存储,如果需要,偶尔会将JSON序列化结果发送到服务器并将它们保存在那里(基于业务流程storig这个数据除了会话之外的其他地方可能是更好的解决方案)。只有当我知道用户最有可能在更长的时间段和多个客户端会话中构建多个阶段的表单时,我才会执行第二部分(使用服务器端组合)。但也可用于防止故障。无论如何。 Javascript是您与服务器端交互的最佳选择

在客户端上的页面之间保留数据

请注意,也可以在客户端的页面之间预先提供数据。检查 sessvars。因此,即使页面被刷新或重定向然后返回,所有这些都可以存储在客户端这些事件之间,如魔术。奇妙的任何相当小的图书馆,让我的生活多次。并且大大降低了应用程序的复杂性,否则必须使用更复杂的东西来实现。

答案 1 :(得分:1)

我使用TaffyDB来存储数据,而且实现起来非常简单。

希望这有助于你

答案 2 :(得分:1)

您可能需要查看PersistJS,它会公开跨浏览器的持久存储对象。当然,作为持久,使用此库存储的数据可以在会话中存活,而不仅仅是页面更改。

最新版本(0.2.0)为here - 请注意上述链接帖子中的版本为0.1.0。

答案 3 :(得分:0)

#1的组合(虽然我使用的是对象,但不一定是数组)和#3看起来是一种很好的方法。在浏览器中本地存储数据(#1)使其可以立即访问。使用基于会话的服务器端存储进行备份可以保护您免受正在刷新的页面的攻击;你可以像现在一样神奇地恢复页面。