• No results found

4 Location Based Services

4.5 Categorizing Location Based Services

4.5.6 Geographic routing of calls:

El objeto Request mediante su colección Form permite acceder a los datos enviados a través de un formulario mediante el método POST.

Para obtener los datos del formulario del ejemplo visto en el apartado anterior se debería escribir el Código fuente 88 dentro de la página ASP llamada PROCESAINFO.ASP.

Nombre usuario: <%=Request.Form("nombre")%><br> Edad usuario: <%=Request.Form("edad")%>

Código fuente 88

Si se quiere obtener los datos sin decodificar bastaría con escribir el Código fuente 89.

Datos: <%=Request.Form%>

Código fuente 89

Y en el navegador aparecería la siguiente salida:

Se puede observar que además de los campos de texto del formulario también se envía el botón de Submit.

Pero no es obligatorio utilizar un botón de tipo submit para enviar un formulario, se puede hacer a través de script de cliente con JavaScript, por ejemplo si tenemos el siguiente formulario que se muestra en la Figura 22.

Figura 22. Formulario enviado mediante JavaScript

Queda bastante mejor que con un botón de tipo submit de un formulario. Veamos ahora el Código fuente 90.

<html> <head>

<meta NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> </head>

<body>

<form method="POST" action="ProcesaInfo.asp" name="formulario">

<table border="1" align="center" width="20%" bgcolor="#C0C0C0" height="117"> <tr>

<td align="center" width="100%" height="111"> <font face="Arial" size="1">Nombre:<br> </font>

<input type="text" maxlength="20" name="nombre" size="15"> <font face="Arial" size="1"><br>Edad:<br></font>

<input type="text" name="edad" maxlength="2" size="15"><br> <a href="javascript:document.formulario.submit()">

<img border="0" src="BotonEnviar.gif" WIDTH="78" HEIGHT="22"></a> </td> </tr> </table> </form> </body> </html> Código fuente 90

La clave está en la línea que indica un enlace, es decir, la línea con la etiqueta <a href>. Como se puede observar en lugar de indicar una URL en el enlace se indica una sentencia de JavaScript, esta sentencia utiliza el modelo de objetos de JavaScript y lanza el método submit() sobre el formulario. Esta sentencia se ejecutará al pulsar sobre el enlace, al igual que ocurre cuando pulsamos un enlace convencional y se carga la nueva dirección en el navegador.

De esta forma el botón submit lo podemos personalizar y podemos darle un aspecto más adecuado a nuestra página. La página ASP ProcesaInfo.asp recuperará la información de la misma forma que habíamos visto.

En algunos casos los elementos de un formulario pueden ser un array, basta con, por ejemplo, dar a varias cajas de texto el mismo nombre, de esta forma para acceder a la información se deberá utilizar un índice. Por ejemplo si tenemos el formulario que aparece en el Código fuente 91, para poder recuperar la información enviada se debería tratar como un array, y se realizaría como indica el Código fuente 92.

<form action="procesaInfo.asp" method="POST">

Nombre: <input type="Text" name="datosPersonales" value=""> Apellidos: <input type="Text" name="datosPersonales" value=""> Edad: <input type="Text" name="datosPersonales" value=""> <input type="Submit" name="boton" value="Enviar">

</form>

Código fuente 91

<%For i=1 To Request.QueryString("datosPersonales").Count

Response.write(Request.Form("datosPersonales")(i)&"<br>") Next%>

Código fuente 92

Como se puede observar los índices comienzan en 1, y para saber el número de elementos del array se utiliza el método Count que devuelve el número de elementos de un array.

Las páginas ASP se pueden utilizar para recoger y procesar valores de formularios HTML de varias maneras:

• Un archivo htm o html estático puede contener un formulario que envíe sus valores a una página ASP, como ha sido el caso de los ejemplos anteriores.

• Una página ASP puede contener un formulario que envíe información a otra página ASP. • Una página ASP puede contener un formulario que envíe información así misma, es decir, a la

página ASP que contiene el formulario.

La última opción es la más potente y la más recomendable, de esta forma una página ASP se llama así misma. Para poder utilizar esta estrategia lo que se debe tener en cuenta es si la página ASP se carga por primera vez o se carga de nuevo porque ha sido llamada por sí misma. Esto se puede conseguir preguntando si existe alguno de los campos del formulario, si existe es que se ha realizado la llamada desde la misma página y por lo tanto se validarán o mostrarán los datos; y si no existe, la página se está cargando por primera vez y se mostrará el formulario. En el Código fuente 93 se puede observar esta técnica.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML>

<HEAD>

<TITLE>Misma página ASP</TITLE> </HEAD>

<BODY>

<%If Request.Form("botonEnviar")<>"" Then%> <u>Datos enviados</u><br>

Edad: <%=Request.Form("edad")%> <%Else%>

<form action="mismaPagina.asp" method="POST">

Nombre: <input type="Text" name="nombre" value=""> Edad: <input type="Text" name="edad" value="">

<input type="Submit" name="botonEnviar" value="Enviar"> </form>

<%End If%> </BODY> </HTML>

Código fuente 93

En este caso se pregunta por el valor del botón de envío, ya que siempre que se envíe el formularío se enviará también el botón de tipo submit. Además se supone el código mostrado pertenece a una página ASP llamada mismaPagina.asp tal como se indica en la propiedad ACTION de la etiqueta <FORM>. Si cargamos por primera vez esta página pasaremos por la rama de la instrucción Else y veríamos la Figura 23 en el navegador.

Figura 23. La página ASP se carga por primera vez.

Una vez cargada la página, si rellenamos los campos de texto y pulsamos sobre el botón etiquetado como Enviar, pasaríamos por el primer bloque del If, ya que la página ASP se volvería a cargar así misma y la variable botonEnviar de la colección Form ya contendría un valor.

Como resultado se obtendría la Figura 24, suponiendo que en el campo nombre habíamos escrito "Pepe" y en edad "21".

Figura 24. La página ASP se carga así misma, al enviar el formulario.

Como se puede observar da la impresión que son dos páginas distintas, pero en realidad es la misma página ASP que genera diferente código HTML según la ejecución del script de servidor.