-1

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

例如: 这是保存的文本。

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

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

我如何在 jquery 和服务器端脚本中实现这一点。?任何想法..?

4

2 回答 2

1

我不认为这是一个好主意。首先你为什么想要这个功能?只是为了好玩,我在某处看到它并认为它会很酷并不是真的有效。我看到的一个正当理由是笔记会很大,你不喜欢不断地将它们发送到服务器。但是您必须了解,使用文本注释很难获得巨大的注释。您必须输入很多内容才能超过 1KB。

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

  • 在中间添加文字
  • 删除一些文字
  • 用另一个字符串替换一个字符串
  • 做多个上述的事情

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

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

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

于 2013-06-25T11:07:11.990 回答
0

一个选项是让richtextbox成为一个内容可编辑的div,其中包含一个简化的HTML标记,这样当你添加一些东西时,它就会出现在这样的跨度中:

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

data-pos插入文本在文本框中的位置在哪里,当您删除某些内容时,它会出现在如下跨度中:

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

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

于 2013-06-25T10:19:38.560 回答