0

我有一个 ASP.NET 应用程序 - 系统的一部分包含相当长的 FormView,用于在系统上创建或更新作业。我们的客户关心的一个问题是潜在的数据丢失 - 即用户在表单上进行更改,却忘记点击“保存”。我们已经解释说,网络本质上是无状态的,这使得它变得困难,但这仍然是一个大问题。

显而易见的“解决方案”是在每次更改值时发回,但即使使用 UpdatePanel 也很慢,并且用户会丢失他们关注的列。我们还在考虑捕获任何链接并提示用户说他们尚未保存,但这会留下很多变量,例如他们关闭浏览器。

我的想法是我们可以构建一个 JSON 字符串并使用 jQuery 使用 AJAX 发布到另一个页面,然后将更改保存到数据库或将它们保存在会话中直到他们单击保存,并始终警告他们未保存的更改。

这听起来合理还是我错过了任何明显的东西?网上有很多自动保存的应用程序,他们使用什么方法?

4

3 回答 3

0

每次更改值时,明显的“解决方案”都会回发

这是一个很好的解决方案,因为一旦用户进行更改,您就可以立即保存数据。现在是理想的一天。

失去焦点可能不是这里的问题,问题可能是页面上的繁重代码导致速度变慢。尝试编辑代码并将其更改为块。这样每个块只有在条件为真时才被执行。这样,您可以将代码减少到其实际版本的几乎 1/4。

我们还在考虑捕获任何链接并提示用户说他们尚未保存,但这会留下很多变量,例如他们关闭浏览器。

没错,但为了尽量减少这种情况,您可以尝试使用一个简单的技巧,使用||运算符。检查任何内容,如果更改,请提醒用户并中断执行。像这样:

if(value == changed) {
  alert('You have not saved yet!');
  return false;
} else if (sec_value == changed) {
  // go on..
}

这意味着,如果您发现未保存的值,您将停止执行代码,因此浏览器不会再寻找任何值。

您可以使用您的第一个想法,将数据保存在数据库中。因为用户不喜欢坚持会话,他可能会删除所有缓存和 cookie,甚至重新安装新的操作系统,所以这是一个问题。您应该始终将数据保存在您身边。

如果你总是不断地警告他们,他们就会厌倦你的 JS 警报。由于这个原因,最好的办法是通过 ajax 保存数据!

于 2013-10-19T22:50:12.740 回答
0

通常它们只在客户端存储值。检查本地存储和会话存储: http ://www.w3schools.com/html/html5_webstorage.asp

于 2013-10-19T22:38:09.060 回答
0

使用 Sisyphus.js 可以帮助您:

阅读: http ://coding.smashingmagazine.com/2011/12/05/sisyphus-js-client-side-drafts-and-more/

http://sisyphus-js.herokuapp.com/

于 2013-10-19T22:58:27.300 回答