【问题标题】:Autosave textarea contents javascript and php [closed]自动保存 textarea 内容 javascript 和 php [关闭]
【发布时间】:2012-11-11 10:44:58
【问题描述】:

我正在为作家构建一个非常简单的文本编辑器作为网络应用程序,它本质上是一个美化的文本区域,但我需要它来自动保存文本区域的内容,以便用户可以离开页面并返回而无需重来。问题是,我对 PHP 知之甚少,但我知道我会以某种形式需要它。您可以提供的任何提示/方向/帮助都会很棒。

【问题讨论】:

  • 如果你知道非常少的PHP,我建议你学习,其次使用谷歌进行一些教程
  • 我建议使用现有组件,例如客户端的aloha-editor.org 和类似meteor 的框架用于持久化功能。

标签: php javascript textarea autosave


【解决方案1】:

如果没有看到任何实际代码,很难给你具体的例子。但这就是你如何让它发挥作用。真正的方法很少。

您首先需要考虑的是,您会将这些临时内容保存在哪里? 您可以将其保存到您的数据库、html5 网络存储中,或者您甚至可以将其保存到 cookie 中,如果用户编辑的文本不是很大的话。

将临时内容保存到网络存储中:

您可以将临时内容保存到网络存储中。然后,如果用户决定关闭他的浏览器,然后再回来,你会首先查看他是否有一些临时内容保存在他的网络存储中。如果是,那么您使用该内容填充他的编辑表单。您应该创建某种跟踪系统来了解何时保存内容。您可以每 5 分钟保存一次内容。

将临时内容保存到数据库中:

我假设您知道足够的 PHP 来启动数据库连接,以及足够的 SQL 来将一些内容保存到数据库中。您需要做的是使用 AJAX 将表单内容发送到临时数据库表中。当用户开始将文本写入表单时,您会不时地将表单的内容发送到您的 PHP 脚本/动作控制器,该控制器会将该内容保存到临时表中。您将使用 AJAX 来实现这一点,因为您不想在每次要保存临时内容时强制用户刷新浏览器。然后如果用户关闭他的浏览器并想要编辑文本,您将首先检查用户是否在数据库中保存了一些临时内容,并将该内容插入到他的表单中。

有很多方法可以完成这项工作,您只需要决定将内容保存在哪里。 我会使用数据库和快速 AJAX 调用。由于并非所有浏览器都支持 HTML5 网络存储,而且 cookie 对于大文本来说很小,并不是真正设计为以这种方式工作的。而且我不会依赖客户端,因为用户可以轻松清除他的历史记录。数据库和 AJAX 调用是比 HTML5 Web 存储更复杂的解决方案,但我认为这是最好的方法。

基本思路是这样的:

  • 生成 HTML 表单
  • 检查是否有一些临时内容并将其插入到表单中 有
  • 让用户编辑他的内容,并将其保存到您选择的存储中 每 5 分钟左右一次。

在处理 HTML5 Web Storage 和 AJAX 时,我建议你看看 jQuery,它可以让你的生活更轻松。

您对如何解决这个问题有了基本的了解,现在由您来编写代码 :) 祝你好运!

【讨论】:

  • 感谢您的快速回复,对选项的清晰解释非常有帮助。由于我很懒而且我喜欢 jQuery,所以我会用 itachi 的答案去客户端。但是非常感谢,我非常感激。
【解决方案2】:

但我需要它来自动保存文本区域的内容,以便用户可以 离开页面并返回而无需重新开始。

您可以在 php 中使用 ajax 和 session[在数据库中存储](或 cookie)使用令牌来实现此目的,但这是一种更简单的方法。 (假设您有客户端存储选项)

看看sisyphus

来自简介:

在现场使用 Sisyphus,您只需以现代方式重新打开页面(使用 HTML5 支持)浏览器并在该表单上查看您的所有更改。它是 轻量级 (3.5 KB) jQuery 插件使用本地存储来防止你的 工作丢失。

支持的弓箭手:

  • 铬 4+
  • 火狐3.5+
  • Opera 10.5+
  • Safari 4+
  • IE 8+
  • 在 Sisyphus 之前加载的页面上带有 jStorage 的 IE 6 和 7

【讨论】:

  • 谢谢!这种客户端解决方法目前对我来说是最好的(在紧迫的期限内运行)。
  • + 这也很优雅:)
猜你喜欢
  • 2011-10-21
  • 2017-01-24
  • 2015-10-22
  • 2013-06-29
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多