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

时间:2013-06-25 10:04:04

标签: php javascript jquery ajax

我在jquery&中创建了一个简单的应用程序。 PHP。 当前的功能就像当用户单击保存按钮时,它发送带有完整数据的ajax请求以在db(mysql)中更新它。 一切顺利。但是现在我想在用户输入时自动保存仅更改的文本。 我不想在文本更改事件中一次又一次地将整个文本发送到服务器。 它应该只发送已经改变的文本。

对于Ex:     这是保存的文字。

用户继续输入时。     这是保存的文字。 未保存的文字..

它应该只能向服务器发送“ 未保存的文本.. ”以在db中更新。

我如何在jquery&中实现它服务器端脚本。?  任何想法..?

2 个答案:

答案 0 :(得分:1)

我不认为这是个好主意。首先,为什么你想要这个功能?只是为了好玩,我在某个地方看到它,并认为它很酷并不是真的有效。我看到的一个有效理由是笔记很大,你不喜欢将它们不断发送到服务器。但你必须明白,用文字说明很难得到一个巨大的音符。你必须输入很多才能超过1KB。

如果您真的需要它,您必须处理在客户端和服务器上查找更改。在客户端,你必须找到已经改变的东西(并考虑到你花了多少时间思考一个问题,我非常怀疑你能做到这一点)。最后不只是添加新文本。如果有人会怎么样:

  • 在中间添加文字
  • 删除一些文字
  • 用另一个字符串替换字符串
  • 制作多个上述内容

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

所以我对此的看法:不要过于复杂化。

如果您担心此人将丢失其更改并且不想在每次用户添加/删除少量字符时向服务器发送新草稿,而是在localstorage(html5 localshorage)或cookie的帮助下将其保存在本地在此基础上构建客户端逻辑。

答案 1 :(得分:0)

一个选项是使richtextbox成为包含简化HTML标记的Content Editable div,这样当你添加它时,它会出现在这样的范围内:

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

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

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

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