【问题标题】:JavaScript - Storing data during user interactionJavaScript - 在用户交互期间存储数据
【发布时间】:2010-04-20 15:42:02
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery xml web-applications


    【解决方案1】:

    好的、坏的和丑陋的

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

    使用 XML 文档将是最糟糕的解决方案,因为 XML 在客户端的支持不如您想象的那么好。

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

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

    在客户端页面之间保存数据

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

    【讨论】:

      【解决方案2】:

      我使用TaffyDB 来存储数据,它非常容易实现。

      希望对你有帮助

      【讨论】:

      • @Bears 会吃掉你,那是因为......它运行良好,可以存储你需要的任何信息。看不出这是怎么回事
      【解决方案3】:

      您可能想查看PersistJS,它公开了一个跨浏览器的持久存储对象。当然,作为持久性,存储在这个库中的数据会在会话中保留下来,而不仅仅是页面更改。

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

      【讨论】:

        【解决方案4】:

        #1(虽然我会使用对象,而不是数组)和#3 的组合似乎是一个好方法。在浏览器中本地存储数据 (#1) 使其可以立即访问。使用基于会话的服务器端存储来支持它可以保护您免受刷新页面的影响;您可以神奇地恢复页面原样。

        【讨论】:

          猜你喜欢
          • 2021-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多