0

使用ajax调用更改数据时,实现数据库和网页同步的最佳方法是什么?举个例子,假设我有一个用于添加评论的表单,我希望它能够异步工作。因此,我创建了一个 JS 代码,将该表单提交到数据库。在无需刷新页面的情况下向用户显示这些新数据的最佳做法是什么?目前我可以想到3个解决这个问题的方法:

  1. 在我们收到来自服务器的 ok 消息后,将 JS 代码放入将处理并将此数据插入页面上的适当元素的回调中。

  2. 作为服务器的响应,发送所有应该在元素中显示的数据,然后简单地使用 JS 插入所有内容。

  3. 1 和 2 之间的混合,作为来自服务器的响应,仅发送处理后的新数据并将其插入适当的位置。

我不喜欢 1 中的代码重复,即我们必须执行两次处理逻辑。我也不喜欢 2. 因为从服务器发送的数据开销。至于3。我最喜欢这种方式,但是来回发送数据还是有一些开销。我知道这些开销在大多数情况下可能不会影响系统的运行,但我想知道是否有任何其他解决方案可以解决这个问题,以及确保数据同步的最佳做法是什么?

4

1 回答 1

1

您可能需要考虑使用模型和集合,例如backboneJS是如何做到的。它有点像“数据库的本地副本”。首先,您的模型只获取几条记录以供显示,例如待办事项列表中的前 10 件事情。该模型具有 CRUD 方法,您可以在其中操作其中的数据。

然后对于您的界面,您有单独的视图代码。这些视图连接到模型,执行 CRUD 以及侦听模型数据更改,这些更改可以来自当前模块接口或接口的其他部分。如果页面的某个部分更改了数据,则连接到同一模型的其余部分会收到通知。模型可以是任何东西,它可以代表数据库中的一个或一组表

同样,该模型将具有 AJAX 同步功能。其中修改的每个数据都会通过 AJAX 调用反映到服务器。当该调用完成时,您会通知所有挂钩接口进行相应更新。由于数据包含在模型中,您只需将更改发送到服务器并监听成功。至于来自服务器的实时数据,您可以在模型中创建一些轮询功能来更新它的数据。如果有变化,通知所有挂钩的接口。

于 2012-04-24T10:20:58.303 回答