处理表单及其操作:一页还是两页?

时间:2010-01-17 22:55:47

标签: language-agnostic

在进行Web编程时,似乎有两种不同的方式来处理表单及其操作。是否有理由偏好另一种方法?

方法1:一页显示表单或处理提交的表单。这看起来很简单,因为一切都有一种形式。但这也意味着if / else案件会变得相当大。

if [form has not been submitted] {
    // display form for user input
} else {
    // handle submitted form
}

方法2:使用表单处理一个页面上的用户输入,表单提交到第二页。

第1页(input.html):

<form action="./submit.html">
    // display form for user input
</form>

第2页(submit.html):处理表单中的输入。

我已经看过使用这两种方法。第一种方法的优点是只需要担心一个页面和一组变量,但页面可能会变大。在第二种方法中,每个文件都更简单,更短,但现在您需要担心和维护两倍的文件。

3 个答案:

答案 0 :(得分:2)

我通常会提交回同一页面,因为如果存在验证错误,您通常需要重新显示初始页面。

成功保存记录后,我通常会使用Post/Redirect/Get方法来避免常见的多次提交问题。

答案 1 :(得分:0)

我认为这取决于它是什么样的形式。如果它有太多的验证,我会用两页。

我总是使用页面,因为我喜欢我的代码干净,但我尽可能使用AJAX,例如联系表格,因为它们很短,我只是将回复发回表格中的div。

答案 2 :(得分:0)

缓存。

如果服务器有一系列静态HTML页面,可能只有AJAX(甚至这些请求被缓存,服务器端,每个用户),它会显着减少其负载和流量。然后将表单目标的动态内容限制在一个相对较小的区域是一个福音,因为无法从缓存中检索作为POST目标的页面,无论它有多大的负载,它都必须从头开始重新生成。

当然这并没有解决n个静态页面+ 1个CGI对n个静态页面+ m CGI的问题。 但是,一旦你不需要吐出复杂的HTML,只需要一个简单的重定向,将事物保存在一个地方可能是有利可图的 - 错误检查和处理,身份验证,会话管理等等。

OTOH如果您的每个页面都是一个CGI脚本,每次访问都会创建一个新页面,没有理由不接受表单数据并同时处理它。