自动将richtextbox中更改的文本保存到数据库

Auto save changed text in richtextbox to database

本文关键字:文本 保存 数据库 richtextbox      更新时间:2023-09-26

我在jquery&php。当前的功能就像当用户单击保存按钮时,它会发送一个带有完整数据的ajax请求,以便在数据库(mysql)中更新它。一切都很好。但现在我想在用户输入时只自动保存更改后的文本。我不想在文本更改事件中一次又一次地将整个文本发送到服务器。它应该只发送已更改的文本。

例如:这是保存的文本

当用户继续键入时。这是保存的文本未保存的文本

它应该只能向服务器发送"未保存的文本.."以在数据库中更新。

如何在jquery&服务器端脚本。?有什么想法吗。。?

我认为这不是一个好主意。首先,你为什么想要这个功能?只是为了好玩,我在某个地方看到了它,并认为它会很酷,这并不是真的有效。我看到的一个有效原因是,笔记会很大,而且你不喜欢不断地将它们发送到服务器。但你必须明白,有了一张短信,很难得到一张大纸条。你必须大量打字才能超过1KB。

如果您真的需要它,您必须处理在客户端和服务器上查找更改的问题。在客户身上,你必须发现发生了什么变化(考虑到你花了多少时间思考一个问题,我非常怀疑你能做到这一点)。这不仅仅是在最后添加新的文本。如果有人愿意怎么办:

  • 在中间添加文本
  • 删除一些文本
  • 用另一个字符串替换一个字符串
  • 制作多个上面提到的东西

即使你会这样做,当你在服务器上收到这些信息时,你也必须编写一个逻辑来更改数据库中的字段。这将比简单的更新困难得多。

所以我的想法是:不要把事情复杂化。

如果你担心用户会丢失他的更改,并且不想每次用户添加/删除几个字符时都向服务器发送新的草稿,那么可以借助localstorage(html5 localshorage)或cookie将其保存在本地,并在此基础上构建客户端逻辑。

一个选项是使richtextbox成为一个包含简化HTML标记的内容可编辑div,这样当您添加某些内容时,它就会显示在如下的跨度中:

<span class="changed added" data-pos"23">new text</span>

其中data-pos是插入文本在文本框中的位置,当您删除某个内容时,它会显示在如下的范围中:

<span class="changed deleted">deleted text</span>

这样,当您单击保存时,您只能将更改后的文本$('#richtextbox span.changed')发送回服务器进行处理。然后服务器可以进行字符串替换,根据需要从数据库中的原始文本中添加或删除文本。