Conferencia ASP 2: Lectura de datos enviados a través de formularios
Autor:Eve Cole
Fecha de actualización:2009-05-30 19:58:19
Lo más importante para aprender ASP es dominar los seis objetos integrados de ASP. De hecho, en la lección anterior, ya aprendimos sobre el objeto Respuesta (¿en serio? ¿Cometiste un error?) y el método Write, el método Redirect y la propiedad Expires más utilizados en el objeto Response. Cuando ves los conceptos de objetos, métodos, propiedades, colecciones y eventos (¡no conozco ninguno de ellos!), si nunca has estado expuesto a ellos antes, eres inteligente y no te importan estos conceptos. Sólo hay que saber utilizarlos. Mi punto de vista es que es sólo el principio. La clave es copiar. Sigamos aprendiendo el objeto Solicitud a través de ejemplos. Para profundizar nuestra comprensión, ejecute estos programas para ver los resultados.
1. Utilice Request.ServerVariables para obtener variables de entorno. Esta parte es muy simple, pero el contenido obtenido es muy importante. Consulte el siguiente ejemplo:
<%@ Idioma=VBScript %>
<HTML><CUERPO>
<% 'wuf8.asp
Response.Write "Ruta para ejecutar el archivo ASP: " &_
Request.ServerVariables("Script_Name") y "<Br>"
Response.Write "Devuelve la longitud de los datos del contenido: " &_
Request.ServerVariables("Content_Length") y "<Br>"
Response.Write "Devolver la dirección IP del cliente: " &_
Request.ServerVariables("Remote_Addr") y "<Br>"
Respuesta.Escribir "Nombre del navegador: " &_
Solicitud.ServerVariables("HTTP_USER_AGENT") y "<Br>"
Response.Write "Regresar a la ruta física real de la página de inicio: " &_
Solicitud.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
%>
<tabla colspan=8 cellpadding=5 borde=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Nombre de variable de entorno</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Contenido</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTRO> <font style="ARIAL NARROW" size="2">
resultado1
</font></td>
<td bgcolor="f7efde" align=CENTRO> <font style="ARIAL NARROW" size="2">
resultado2
</font></td></tr>
</tabla>
</BODY></HTML>
¡Ahora deberías descubrir lo fácil que resulta ser la rutina wuf2.asp de la lección anterior!
Nota: El marcado HTML en la última parte de este programa es puramente una preparación para el siguiente ejemplo, así que no se sorprenda. Entonces, ¿qué otras variables de entorno existen? Lo sabrá ejecutando el siguiente ejemplo (este programa ha eliminado algunos códigos, es mejor descargar el programa fuente de mi sitio para una mejor comprensión).
<%@ Idioma=VBScript %>
<% 'wuf9.asp
Opción explícita
Sv tenue
%>
<HTML><CUERPO>
<tabla colspan=8 cellpadding=5 borde=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Nombre de variable de entorno</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Resultados</font></td>
</tr>
<%
para cada Sv en Request.ServerVariables
Respuesta.Escribir "<tr>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Respuesta.Escribir Sv
Respuesta.Escribe "</font></td>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Respuesta.Solicitud de escritura.Variables del servidor(Sv)
Respuesta.Escribe "</font></td></tr>"
próximo
%>
</tabla>
</BODY></HTML>
Aquí se utiliza un bucle For...Each para enumerar todos los elementos de una colección. Si no comprende la segunda mitad, compare wuf8.asp, observe los resultados de ejecución y comprendalo cuidadosamente (¿cuál es su actitud?).
2. Transmitir datos al servidor a través del formulario (esto también puede entenderse como cómo el servidor lee los datos enviados por el cliente)
Si ha trabajado en una página de inicio, debe saber que muchas páginas de inicio generalmente utilizan formularios para permitir a los usuarios ingresar datos y luego enviarlos a través del botón "enviar". El "método" en el formulario De tiene dos métodos principales: POST y GET Después de "acción", generalmente se especifica un archivo .cgi, .pl o .asp. Lo que vamos a aprender hoy es cómo escribir este .asp. archivo.
(1) Si utiliza el método POST para transmitir datos, utilice Request.Form para leer los datos.
Primero edite el siguiente archivo wuf10.htm para que los usuarios ingresen datos:
<html>
<cuerpo bgcolor="#FFFFFF">
<formulario método="publicar" acción="wuf11.asp">
Nombre: <tipo de entrada="texto" nombre="tu nombre"><br>
Género: <seleccione nombre="género">
<opción>Hombre</opción>
<opción>Mujer</opción>
</seleccionar> <br>
Mensaje: <textarea name="message">¡Hola!
Preste atención al procesamiento de texto de varias líneas</textarea> <br>
Pasatiempos (mantenga presionada la tecla Ctrl para seleccionar varios):
<seleccionar nombre="hobby" tamaño múltiple="4">
<opción>Computadora</opción>
<opción>Compras</opción>
<opción>Películas</opción>
<opción>Lectura</opción>
</seleccionar> <br>
<tipo de entrada="enviar" nombre="Enviar" valor="Enviar">
<tipo de entrada="reiniciar" nombre="Enviar2" valor="Reiniciar">
</formulario>
</cuerpo>
</html>
Luego escriba un archivo wuf11.asp que wuf10.htm debe usar para recopilar datos:
<%@ Idioma=VBScript %>
<% 'wuf11.asp
Opción explícita
Respuesta.Expira=0
Dim StrName, StrGender, StrM, StrMsg
StrName = Trim(Request.Form("sunombre")) 'La función de recorte se utiliza para eliminar espacios iniciales y finales
StrGender = Trim(Solicitud.Form("género"))
StrM = Recortar(Solicitud.Form("mensaje"))
StrMsg = Reemplazar(StrM,vbcrlf,"<Br>" & vbcrlf)
' vbcrlf es equivalente a la combinación de retorno de carro y avance de línea. En cuanto a la función Reemplazar, su función es reemplazar vbcrlf en la cadena StrM con "<Br>" y vbcrlf (¿piense en el uso de este vbcrlf? Lo entenderá mirando el código fuente HTML del archivo de salida). Consulte la ayuda de VBScript para obtener más detalles.
%>
<HTML><CUERPO>
Nombre: <%= StrName%><Br><Br>
Género: <%= StrGender%><Br><Br>
Mensaje: <Br><Br>
<%= StrM%><Br><Br>
<%= MensajeStr%><Br><Br>
De hecho, también se pasa el valor del botón "Enviar": <Br>
<%= Solicitud.Form("Enviar")%><Br><Br>
<% 'Primero comprenda lo anterior y luego vea cómo leer múltiples opciones si está interesado
Response.Write "Número total de pasatiempos seleccionados:" & Request.Form("hobby").Count & "<Br>"
Yo oscuro
Para I = 1 para Request.Form("hobby").Count
Respuesta.Escribir Solicitud.Form("hobby")(I) & "<Br>"
Próximo
%>
</BODY></HTML>
En este ejemplo, para facilitar la comprensión, utilizamos dos programas. De hecho, también puede utilizar solo un programa. Si está interesado, consulte la siguiente rutina wuf12.asp, que le ayudará a profundizar su comprensión de las variables de entorno.
<%@ Idioma=VBScript %>
<% 'wuf12.asp
Opción explícita
Respuesta.Expira=0
Dim StrName, StrGender, StrM, StrMsg
Si Request.ServerVariables("Content_Length") <> 0 Entonces
'Después de enviar los datos, la longitud no será 0, así que ejecute la siguiente declaración para mostrar el resultado
'La siguiente parte en realidad está copiada de wuf11.asp.
StrName = Trim(Solicitud.Form("sunombre"))
StrGender = Trim(Solicitud.Form("género"))
StrM = Recortar(Solicitud.Form("mensaje"))
StrMsg = Reemplazar (StrM,vbcrlf,"<Br>" y vbcrlf)
%>
<HTML><CUERPO>
Nombre: <%= StrName%><Br><Br>
Género: <%= StrGender%><Br><Br>
Mensaje: <Br><Br>
<%= StrM%><Br><Br>
<%= MensajeStr%><Br><Br>
<%
Response.Write "Número total de pasatiempos seleccionados:" & Request.Form("hobby").Count & "<Br>"
Yo oscuro
Para I = 1 para Request.Form("hobby").Count
Respuesta.Escribir Solicitud.Form("hobby")(I) & "<Br>"
Próximo
%>
</BODY></HTML>
<%
Demás
'Cuando la página se carga por primera vez, no se envían datos, por lo que la parte anterior no se ejecuta, sino que comienza desde aquí
'Es por eso que hay dos pares de <HTML></HTML>
'Simplemente copie wuf10.htm a continuación.
'<form method="post" action="wuf11.asp"> ha sido reemplazado con variables de entorno, pero es exactamente igual
Response.Write "Mira los resultados: " & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><CUERPO>
<form método="post" action="<%= Request.ServerVariables("Script_name")%>">
Nombre: <tipo de entrada="texto" nombre="tu nombre"><br>
Género: <seleccione nombre="género">
<opción>Hombre</opción>
<opción>Mujer</opción>
</seleccionar> <br>
Mensaje: <textarea name="message">¡Hola!
Preste atención al procesamiento de texto de varias líneas</textarea> <br>
Pasatiempos (mantenga presionada la tecla Ctrl para seleccionar varios):
<seleccionar nombre="hobby" tamaño múltiple="4">
<opción>Computadora</opción>
<opción>Compras</opción>
<opción>Películas</opción>
<opción>Lectura</opción>
</seleccionar> <br>
<tipo de entrada="enviar" nombre="Enviar" valor="Enviar">
<tipo de entrada="reiniciar" nombre="Enviar2" valor="Reiniciar">
</formulario>
</BODY></HTML>
<%Finalizar si%>
(2) Si utiliza el método GET para transmitir datos, utilice Request.Querystring para leer los datos.
Primero edite el siguiente archivo wuf13.htm para que los usuarios ingresen datos:
<html>
<cuerpo bgcolor="#FFFFFF">
<formulario método="get" action="wuf14.asp">
Nombre en inglés: <input type="text" name="Ename"> <br>
Nombre chino: <input type="text" name="Cname"><br>
Género: <seleccione nombre="género">
<opción>Hombre</opción>
<opción>Mujer</opción>
</seleccionar> <br>
<tipo de entrada="enviar" nombre="Enviar" valor="Enviar">
<tipo de entrada="reiniciar" nombre="Enviar2" valor="Reiniciar">
</formulario>
</cuerpo>
</html>
Luego escriba un archivo wuf14.asp que wuf13.htm debe usar para recopilar datos:
<%@ Idioma=VBScript %>
<% 'wuf14.asp
Opción explícita
Respuesta.Expira=0
Dim StrCname, StrEname, StrGender
StrEname = Trim(Request.QueryString("Ename")) 'La función Trim se utiliza para eliminar espacios iniciales y finales
StrCname = Recortar(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("género"))
%>
<HTML><CUERPO>
Nombre en inglés: <%= StrEname%><Br><Br>
Nombre chino: <%= StrCname%><Br><Br>
Género: <%= StrGender%><Br><Br>
Eche un vistazo a la cadena enviada: <Br>
<%= Solicitud.ServerVariables("Query_String")%>
</BODY></HTML>
Para comprender mejor este programa, será mejor que primero pruebe el efecto de la rutina wuf13.htm en el navegador y observe los resultados de salida. Encontrará que la cadena larga en la barra de direcciones le resulta familiar, como cuando. buscando en Yahoo Visto más o menos lo mismo. En este momento, intenta ingresar "http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=female" directamente en la barra de direcciones y obtiene el mismo resultado. Entonces puedes verlo de esta manera, el resultado de wuf13.htm es obtener un enlace con parámetros como este. Request.QueryString lee cada dato de los parámetros adicionales de la dirección http://.
De hecho, cuando se presiona el botón "Enviar", la cadena de consulta (datos de entrada) se agregará a la dirección URL en forma de parámetros (cada parámetro está separado por "&") para lograr el propósito de transferir datos. Al mismo tiempo, tenga en cuenta que no hay chino en la cadena de consulta que se muestra en el navegador, sino caracteres confusos irreconocibles que contienen signos de porcentaje. Esto se debe a que está codificado. Finalmente, como antes, estos dos programas también se pueden fusionar en uno solo (rutina wuf15.asp, debes descargarlo de mi sitio).
Algunas notas:
1. Si utiliza el método POST para enviar datos, Request.ServerVariables("Content_Length")>0.
Si utiliza el método GET para enviar datos, entonces Request.ServerVariables("Query_String") <> "".
2. Después de comprender el principio, puede combinar Request.Form y Request.QueryString en el mismo archivo ASP.
3. Si hay varios botones en un formulario, ¿cómo se determina qué botón presionó el usuario? Si presta atención, encontrará que hay una oración en la rutina wuf11.asp que también transmite el valor del botón "Enviar", y se puede encontrar un valor similar en la cadena de consulta generada en wuf13.htm. Tenga en cuenta: solo se transmite el valor del botón presionado, mientras que el valor de otros botones es "". Esta es la base para el juicio (el sitio web InfoWeb de "China Planning News" tiene un artículo similar).