2009-10-29 53 views
2

我想问一下你对此的看法。这是一个理论问题。AJAX和动作预测

我处于一种情况,我有一个界面显示给使用AJAX与服务器交谈的用户。服务器端语言在这里并不重要。我有一个带有字段的表单,每个表单都是可删除的。如果用户选择几个“删除” - 勾选框并按下更新,那么我有这两个选项:

选项1: 删除字段时,使用JavaScript立即删除HTML并在后台运行AJAX以删除那些领域。这实现了一个快速界面 - >更好的用户体验。但是,如果AJAX调用在服务器端失败(无法删除字段),则以前删除的HTML字段会给用户一个错误的假设(他们被删除)。

选项2: 删除字段时,根据其成功运行AJAX,删除HTML或不删除。这为用户提供了准确的反馈,但表单会冻结,直到AJAX调用结束=慢(er)。

你的想法是什么?哪种方法对我来说似乎更好,或者我应该让它成为一种选择?

回答

4

选项3:标记控件被删除(例如,重叠的半透明灰色框上有一个删除图标)。发送请求。当它返回时,要么删除控件,要么更改该框以显示错误图标几秒钟(然后删除该框)。

允许接口的其余部分在这种情况下进行交互。

+0

而相反,如果他添加了一个新字段,立即生成HTML(添加行),但在AJAX运行时将一个半透明框放在它上面。这似乎是有道理的,但是如何处理错误处理呢?比方说,我们添加了一个字段并删除了一个,两个操作都失败了 - 用户会看到什么以及Where/How?如果灰色方块变成红色了一些错误文本,并在会此错误消息消失,让用户再试一次吗? – Tower 2009-10-29 11:13:48

+0

同意(和增加表决),因为这给你你想要的两件事; [1]几乎立即(客户端)反馈,要求的操作是针对用户输入进行的,[2]准确指示项目是否被删除。 – 2009-10-29 11:18:29

+0

@tower - 每个操作的结果应显示在受影响的项目旁边/上方。因此,失败的删除将显示一条消息/图像来指示删除失败,并且失败的插入会显示一条消息,指示新添加的项目处于“灰色”状态,或者作为单独的消息。后者很大程度上取决于你提供哪些选项来处理失败的插入/添加。 – 2009-10-29 11:21:31

1

不错的问题。

第三个选择是:

  1. 禁用立即对照
  2. 删除他们当阿贾克斯返回

这给用户反馈的东西得到了有效请求(响应), ,同时也显示其有效完成的时刻。


此外,用户莫名其妙地感到“遥远的呼唤”,这不会引起他的错误,因为它真的发生了。无论如何,隐藏这种感觉没有任何意义,因为延迟总会在那里。