ajax网页与数据库的同步

时间:2012-04-24 10:08:53

标签: javascript ajax

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

  1. 将JS代码放入回调中,该回调将在我们从服务器收到ok mesage后处理并将此数据插入页面上的相应元素。

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

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

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

1 个答案:

答案 0 :(得分:1)

您可能需要考虑使用模型和集合,例如backboneJS如何使用它。它是一种“数据库的本地副本”。首先,您的模型仅提取一些记录以供显示,例如待办事项列表中的前10项内容。该模型具有CRUD方法,您可以在其中操作其中的数据。

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

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