ASP 表单和用户输入


Request.QueryString 和 Request.Form 命令用于从表单取回信息,比如用户的输入。

在线实例

使用 method="get" 的表单
本例演示如何使用 Request.QueryString 命令与用户进行交互。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <form action="demo_reqquery.asp" method="get">
  5. Your name: <input type="text" name="fname" size="20" />
  6. <input type="submit" value="Submit" />
  7. </form>
  8. <%
  9. dim fname
  10. fname=Request.QueryString("fname")
  11. If fname<>"" Then
  12.       Response.Write("Hello " & fname & "!<br>")
  13.       Response.Write("How are you today?")
  14. End If
  15. %>
  16. </body>
  17. </html>

使用 method="post" 的表单
本例演示如何使用 Request.Form 命令与用户进行交互。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <form action="demo_simpleform.asp" method="post">
  5. Your name: <input type="text" name="fname" size="20" />
  6. <input type="submit" value="Submit" />
  7. </form>
  8. <%
  9. dim fname
  10. fname=Request.Form("fname")
  11. If fname<>"" Then
  12.       Response.Write("Hello " & fname & "!<br>")
  13.       Response.Write("How are you today?")
  14. End If
  15. %>
  16. </body>
  17. </html>

使用单选按钮的表单
本例演示如何使用 Request.Form 命令通过单选按钮与用户进行交互。

  1. <!DOCTYPE html>
  2. <html>
  3. <%
  4. dim cars
  5. cars=Request.Form("cars")
  6. %>
  7. <body>
  8. <form action="demo_radiob.asp method="post">
  9. <p>Please select your favorite car:</p>
  10.  
  11. <input type="radio" name="cars"
  12. <%if cars="Volvo" then Response.Write("checked")%>
  13. value="Volvo">Volvo</input>
  14. <br>
  15. <input type="radio" name="cars"
  16. <%if cars="Saab" then Response.Write("checked")%>
  17. value="Saab">Saab</input>
  18. <br>
  19. <input type="radio" name="cars"
  20. <%if cars="BMW" then Response.Write("checked")%>
  21. value="BMW">BMW</input>
  22. <br><br>
  23. <input type="submit" value="Submit" />
  24. </form>
  25. <%
  26. if cars<>"" then
  27.    Response.Write("<p>Your favorite car is: " & cars & "</p>")
  28. end if
  29. %>
  30. </body>
  31. </html>

用户输入

Request 对象可用于从表单取回用户信息。

HTML 表单实例

  1. <form method="get" action="simpleform.asp">
    First Name: <input type="text" name="fname"><br>
    Last Name: <input type="text" name="lname"><br><br>
    <input type="submit" value="Submit">
    </form>

用户输入可通过 Request.QueryString 或 Request.Form 命令取回。

Request.QueryString

Request.QueryString 命令用于收集使用 method="get" 的表单中的值。

使用 GET 方法从表单传送的信息对所有的用户都是可见的(出现在浏览器的地址栏),并且对所发送信息的量也有限制。

如果用户在上面的 HTML 表单中输入 "Bill" 和 "Gates",发送至服务器的 URL 会类似这样:

  1. http://www.shouce.ren/simpleform.asp?fname=Bill&lname=Gates

假设 "simpleform.asp" 文件包含下面的 ASP 脚本:

  1. <body>
    Welcome
    <%
    response.write(request.querystring("fname"))
    response.write(" " & request.querystring("lname"))
    %>
    </body>

浏览器将把文档的 body 部分显示如下:

  1. Welcome Bill Gates

Request.Form

Request.Form 命令用于收集使用 method="post" 的表单中的值。

使用 POST 方法从表单传送的信息对用户是不可见的,并且对所发送信息的量没有限制。

如果用户在上面的 HTML 表单中输入 "Bill" 和 "Gates",发送至服务器的 URL 会类似这样:

  1. http://www.shouce.ren/simpleform.asp

假设 "simpleform.asp" 文件包含下面的 ASP 脚本:

  1. <body>
    Welcome
    <%
    response.write(request.form("fname"))
    response.write(" " & request.form("lname"))
    %>
    </body>

浏览器将把文档的 body 部分显示如下:

  1. Welcome Bill Gates

表单验证

只要有可能,就尽量在浏览器上对用户的输入进行验证(通过客户端脚本)。浏览器的验证速度更快,并可以减少服务器的负载。

如果用户输入会保存到数据库中,那么您应该考虑使用服务器端验证。有一种在服务器端验证表单的好方法,就是将(验证过的)表单传回表单页面,而不是转至不同的页面。用户随后就可以在同一个页面中得到错误的信息。这样做更易于用户发现错误。