代码之家  ›  专栏  ›  技术社区  ›  eaolson

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

  •  0
  • eaolson  · 技术社区  · 15 年前

    在进行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 回复  |  直到 15 年前
        1
  •  2
  •   D'Arcy Rittich    15 年前

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

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

        2
  •  0
  •   SoftwareDev    15 年前

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

    尽管我总是使用到页面,因为我喜欢我的代码是干净的,但是我尽可能使用Ajax,例如联系人表单,因为它们很短,我只是将响应发回到表单中的一个DIV。

        3
  •  0
  •   SF.    15 年前

    缓存。

    如果服务器有一系列静态HTML页面,可能只有Ajax(甚至这些请求都是缓存的、服务器端的、每个用户)激活的,那么它会显著降低负载和流量。然后,将表单目标的动态内容限制在一个相对较小的区域是一个好处,因为作为post目标的页面无法从缓存中检索到,因此无论加载有多重,都必须从头重新生成。

    当然,这并不能解决n个静态页+1个CGI与n个静态页+m个CGI的问题。 但是,一旦您不需要吐出复杂的HTML,只需一个简单的重定向,把事情放在一个地方可能是有利可图的——错误检查和处理、身份验证、会话管理等等。

    o如果您的每个页面都是在每次访问时创建新页面的CGI脚本,那么就没有理由不能同时接受和处理表单数据。

    推荐文章