我只是想知道在Ajax Forms中保存数据的一般最佳实践。例如,在Spree ECommerce中,每次更改对象列表中的值(例如,更改订单中某个项的数量)时,它都会使用Ajax调用更新数据库。
让用户在编辑表单时手动按“保存”或“更新”,或者如果可以(您已经设置了ajax替代方案),只是每次都自动保存数据变化?
Stack Overflow Careers似乎每隔几秒就使用一些ajax保存你的个人资料的“草稿”。
因此,如果你有Ajax,似乎有3种方法可以在表单中保存数据:
你推荐什么?
答案 0 :(得分:5)
好问题。我不认为有一个适合所有情况的一刀切的最佳实践。通常,您的解决方案越用户友好,实施的复杂性越大,正确降级解决方案的可能性就越小(除非您非常非常小心)。
此外,无论您选择采用哪种方法,都会产生影响。例如,定期自动保存可能不是一个好主意,涉及大量数据验证。用户可能会输入一些内容,并在几秒钟后收到错误消息。在这种情况下,即时反馈对用户更有利,因为导致验证失败的输入可能是比较之前的一些操作,因此可能会让用户感到有些困惑。
每当用户更改某些内容(按键,复选框选择等)时,保存似乎是从可用性角度出发的方式,但同样,这取决于您正在做什么并可能产生负面的副作用。例如,如果用户连接速度较慢,他/她可能会觉得您的网站速度很慢或有问题。它还会比老式的“点击保存”方法产生更多的数据库查询。
我想解决上述一些警告的一个显而易见的方法是结合现场客户端验证,但最终可行的方法可能是hallway testers所说的。 / p>
最终建议:创建旧式“点击保存以保存”表单并从那里进行增强,确保在没有javascript的情况下不会中断(除非您获得更高权限的明确许可)。希望这不是废话。
答案 1 :(得分:1)
这一切都取决于具体情况。如果表单由于用户输入而发生变化,那么您可能会在每次更改时更好地保存/更新表单。否则,请等待明确的用户操作。
如果您对表单采用自动保存策略,我只能看到问题。
答案 2 :(得分: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!