Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有效地验证页面上的数据是否存在';自从你上膛后没有被别人换过?_Javascript_Html_Forms_Validation_Yii - Fatal编程技术网

Javascript 有效地验证页面上的数据是否存在';自从你上膛后没有被别人换过?

Javascript 有效地验证页面上的数据是否存在';自从你上膛后没有被别人换过?,javascript,html,forms,validation,yii,Javascript,Html,Forms,Validation,Yii,我们有一个包含大量用户可编辑数据的页面,这些数据是从数据库中的各个表填充的。数据有各种不同的形式、下拉列表、复选框、输入框、文本区域等 在两个用户几乎同时加载一条记录、一个用户进行更改,然后另一个用户进行一组更改的情况下,出现了一些冲突。当他们存钱时,他们不知道其他人做了改变,可能只是破坏了他们所做的改变,或是改写了他们的改变 我正在尝试实施一个解决方案来缓解这个问题,例如当其他人更改数据时向用户提示错误 我想知道是否有一种最佳实践方法来检查此问题?我的一些想法是 提交字段中的“当前”数据和“

我们有一个包含大量用户可编辑数据的页面,这些数据是从数据库中的各个表填充的。数据有各种不同的形式、下拉列表、复选框、输入框、文本区域等

在两个用户几乎同时加载一条记录、一个用户进行更改,然后另一个用户进行一组更改的情况下,出现了一些冲突。当他们存钱时,他们不知道其他人做了改变,可能只是破坏了他们所做的改变,或是改写了他们的改变

我正在尝试实施一个解决方案来缓解这个问题,例如当其他人更改数据时向用户提示错误

我想知道是否有一种最佳实践方法来检查此问题?我的一些想法是

  • 提交字段中的“当前”数据和“原始”数据。然后检查更改的内容并在数据库中进行比较,以查看默认值是否与当前保存的内容不同。这会起作用,但似乎对性能最不友好
  • 使用jquery/javascript检测字段何时被编辑,如果它已从
    defaultValue
    更改,则设置一个隐藏字段,该字段将被提交以指示其原始值。然后它将做类似于前面的想法所做的事情
  • 设置一个隐藏字段,时间戳为用户加载页面的时间。当他们提交时,使用该时间戳并检查我们的历史记录表,以查看页面上的任何数据是否自该时间戳以来发生了更改。这似乎是最有效的想法,也可能是最容易实现的

有没有更好的选择或最佳实践方法来实现这一点?我觉得我在为一个常见的问题重新发明轮子

您正在解决一个常见问题。但它很常见,因为它需要频繁地反复解决。“乐观记录锁定”是你前进的道路。看起来yii(我不熟悉)有能力处理这个问题。我找到了

无论yii基础设施是为您提供此功能,还是您必须自己构建它,您想要做的(支持乐观记录锁定)是:

  • 在向客户端检索数据时,制作并保留一份未更改的数据副本
  • 客户端必须将更改连同未更改的数据副本一起提交回服务器
  • 服务器的“更新”例程比较未更改的 复制到当前记录。如果某些东西已经改变了,那么它必须改变 返回错误消息和“新建”当前记录
  • 如果没有任何更改,则由服务器进行更新

  • 另一种选择是悲观记录锁定,您可以查看它。我之所以避免它,是因为它有其他问题,但在某些情况下它更合适。

    您正在解决一个常见问题。但它很常见,因为它需要频繁地反复解决。“乐观记录锁定”是你前进的道路。看起来yii(我不熟悉)有能力处理这个问题。我找到了

    无论yii基础设施是为您提供此功能,还是您必须自己构建它,您想要做的(支持乐观记录锁定)是:

  • 在向客户端检索数据时,制作并保留一份未更改的数据副本
  • 客户端必须将更改连同未更改的数据副本一起提交回服务器
  • 服务器的“更新”例程比较未更改的 复制到当前记录。如果某些东西已经改变了,那么它必须改变 返回错误消息和“新建”当前记录
  • 如果没有任何更改,则由服务器进行更新

  • 另一种选择是悲观记录锁定,您可以查看它。我之所以避免使用它,是因为它还存在其他问题,但在某些情况下它更合适。

    听起来像是你重新发明了git。您需要将版本控制合并到此工作流中。@al76已经有了一个历史记录系统。也许实现“事务模式”可能是一个前进的方向。听起来像是您重新发明了git。您需要将版本控制合并到此工作流中。@al76已有一个历史记录系统。也许实现“事务模式”可能是一个前进的方向。