处理表单的正确方法

时间:2011-11-16 14:26:33

标签: http

在http中处理表单的正确方法是什么?

on / somepage:

<form method="POST" action="/someaction.html">
    <input type="text" name="name">
    <input type="submit">
</form>

我们假设,该用户没有填写“姓名”。所以我应该产生一些错误。我应该怎么做:

第一种方法

  1. POST / someaction和302 Redirect to / posterror?error = 1
  2. GET / posterror?error = 1和200 Ok,包含有关错误和表单的内容
  3. 第二

    1. POST / someaction和200 Ok,包含有关错误和表单的内容
    2. 第三

      1. POST / someaction,记住会话表单错误,302重定向到/ posterror
      2. GET / posterror和200 Ok,包含有关错误和表单的内容
      3. 哪一个是正确的方法?也许是第四个?

4 个答案:

答案 0 :(得分:1)

正确的方法称为post/redirect/get,由维基百科描述为:

  

发布/重定向/获取(PRG)是Web开发人员的常见设计模式   帮助避免某些重复的表单提交并允许用户代理   使用书签和刷新按钮更直观地表现。

答案 1 :(得分:1)

第三个。它允许用户安全地点击页面刷新或书签。第一个虽然相似,但是要求你在线上来回传递形式的内容,这是低效的。作为细微的改进,您可以考虑:

  • 重定向回表单,而不是单独的错误页面,以便用户有机会纠正错误
  • 不是仅将错误数据存储在会话中,而是使用一些唯一的ID存储它,然后将其包含在重定向URL中。通过这种方式,用户可以在两个浏览器窗口中打开页面,并且不会互相踩到一个脚趾。
  • 在设定的时间长度之后,或最终正确提交表单时,使存储的错误失效。

答案 2 :(得分:0)

我建议在使用javascript发送for之前进行某种验证。 当然,您也应该在服务器端验证表单输入。至于是否使用重定向,我不知道那里有任何事实上的标准。

如果你想跟随使用HTTP协议,那么你应该发回一个4xx状态代码(例如400个错误请求),并提供一条信息性消息,说明输入中有什么问题。

答案 3 :(得分:0)

利用客户端验证吗?使用javascript可以避免发布表单(并减少服务器端处理)并让客户端(用户端:浏览器)执行验证。您还有其他什么验证?

以下是您可以使用javascript应用的基本验证链接:

http://www.w3schools.com/js/js_form_validation.asp