2009-11-24 81 views
1

我们正在设计一个包含许多问题(使用ASP.NET)的数据捕获流程,这些问题可以重复(例如输入所有车辆)。在极少数情况下,这可能会超过100个重复组。网页表单设计 - 使用AJAX的多页与单页面

因此,我已经说过,我们并没有将应用程序拆分为多个表单,而是使用逻辑点在向导风格中进行页面拆分(例如个人详细信息)。

但是,队内讨论我们是否应该使用AJAX/Javascript来有一个单一的形式。对此的建议方法似乎为:

  1. 加载所有步骤一次去,只需使用JavaScript切换。
  2. 在步骤1中加载并使用AJAX加载其他步骤。
  3. 使用AJAX提交表单并使用AJAX加载下一步。

选项1给我打败了整个观点,因为你最终会加载一个巨大的HTML树 - 有些页面可能很大。如果只有少数几个问题,而且每个问题都很少,那么这将更容易被接受。

选项2,我似乎过于复杂,再加上如果用户点击一个按钮,就可以保证接下来的页面加载?另外,如果页面2需要来自页面1的输入,会发生什么?

选项3似乎是可行的,但我会虽然做AJAX处理的响应时间实际上比做标准表单提交慢,因为会有更多的客户端浏览器涉及处理。此外,这种方法比标准表单提交更复杂。

您是否认为我的方法是正确的(标准表格帖子)?我读过,通常AJAX用于增强页面的功能,而不是试图模拟多个页面。

回答

0

关于性能,这是你可以测试的东西。但是,如果你去了AJAX路线,你应该为没有使用Javascript的用户提供一个替代方案。所需的额外工作可能足以将这个想法推下去。

+0

同意我们希望确保标准表单帖子应该从辅助功能的角度来工作。 它只是觉得我们要做的就是通过AJAX和我提到的提案发布整个页面。我们会替换除了页眉和页脚之外的所有内容。 这也意味着我们使用AJAX打破后退按钮行为。 – spooner 2009-11-24 21:44:05

+0

如果您只是在寻找人来帮助您打败使用AJAX的建议,请将我算进来,如果您愿意的话。从你所描述的情况来看,这似乎更像是一种放纵,而不是从这种情况下的可用性角度提供任何实质性的东西。 – 2009-11-25 09:42:42

+0

但是还有一件事 - 如果您加载entrie页面并使用js对其进行分页,则可能需要一种方法来保持会话存活。 AJAX将帮助您 - 有效地定时ping网络服务器。 – 2009-11-25 09:44:42

0

在我看来,选择2 & 3谎言在光谱的两端。您可以使用AJAX提交下一步所需的任何信息。选项2不提交。提交整个表单,并且您有选项3.您可能需要介于两者之间的某个内容。对于性能,需要完成一些处理(收集表单数据,数据传输,解析,将结果拼接到文档中),但浏览器将使用传统形式执行相同的任务; AJAX只是使部分过程更加明显。由于数据规模较小(是表单的一部分而不是整页),因此性能不会太差,事实上可能会更好。此外,现代的JavaScript引擎速度非常快。

在任何情况下,当JS不支持时,请仔细聆听MikeB有关退化的建议,除非这是针对内部应用程序,您可以依靠浏览器进行配置&。

+0

关注的是,它不是页面中的许多小表单,每一步都会有大量的问题输入(在某些步骤中考虑大约50个以上的输入),并且我们必须在用户导航时发布结果在步骤之间。 基本上每一页我们唯一要保存的AJAX路线是在页眉和页脚中加载。另一个问题是ASP.NET中的限制,只能有一个服务器端表单,因此可能会增加额外的复杂性来选择性地发布特定的元素。 对于这样的大帖子,我不确定我看到使用AJAX和整页文章的好处。 – spooner 2009-11-24 21:40:52