5

我只是想知道在 Ajax 表单中保存数据的一般最佳实践是什么。例如,在Spree ECommerce中,每次更改对象列表中的值(例如更改订单中某个项目的数量)时,它都会使用 Ajax 调用更新数据库。

让用户在完成编辑表单时手动按“保存”或“更新”是否更好,或者如果可以(您已经设置了 ajax 替代方案),每次更改时自动保存数据?

似乎 Stack Overflow Careers 每隔几秒钟就会使用一些 ajax 东西保存你的个人资料的“草稿”。

因此,如果您使用 Ajax,似乎有 3 种方法可以将数据保存在表单中:

  1. 用户按下按钮,一次保存所有数据,如果数据很重要则不好
  2. 保存每个时间间隔
  3. 保存所有更改

你有什么建议吗?

4

3 回答 3

5

好问题。我认为没有一种适用于所有情况的万能最佳实践。通常,您的解决方案越用户友好,实现的复杂性就越高,适当的优雅降级解决方案的可能性就越小(除非您非常非常小心)。

此外,无论您选择采用哪种方法,都会产生影响。例如,在涉及大量数据验证的情况下,定期自动保存可能不是一个好主意。用户可能会输入一些内容,并在几秒钟后收到错误消息。在这种情况下,即时反馈对用户更有利,因为导致验证失败的输入可能是,比如说,几个动作之前,所以它可能会让用户有些困惑。

从可用性的角度来看,每当用户更改某些内容(按键、复选框选择等)时进行保存似乎是一种方法,但同样,这取决于您在做什么,并且可能会产生负面影响。例如,如果用户的连接速度很慢,他/她可能会觉得您的网站速度很慢或有问题。与老式的“单击保存”方法相比,它还会产生更多的数据库查询。

我想绕过上述一些警告的明显方法是结合现场客户端验证,但最终有效的方法很可能取决于你的走廊测试人员所说的。

最后的建议:创建旧式的“单击保存以保存”表单并从那里进行增强,确保没有 javascript 就不会中断(除非您有更高权威的明确许可)。希望这不是胡说八道。

于 2010-02-15T19:54:45.820 回答
1

这一切都取决于情况。如果表单由于用户输入而发生更改,那么每次更改时您可能会得到更好的保存/更新表单。否则等待明确的用户操作。

如果您对表单采用自动保存策略,我只能看到即将出现的麻烦。

于 2010-02-15T19:40:05.090 回答
0

我知道这篇文章很旧,但我喜欢这个简单的解决方案,如果用户更改表单上的 som 数据并尝试离开页面而不保存它,我会提示记住消息

在全局 .js 中:

var validate=false;
window.onbeforeunload = function() { if(validate) return "You made some changes, are you sure you want to leave?"; };

在表单页面中,(我是在 jquery 中完成的):

$('input,textarea,select').change(function(){ validate=true; });
$('form').submit(function() { validate=false; });

BR!

于 2013-03-05T02:10:47.630 回答