Para guardar o enviar datos a un script utilizaremos el siguiente procedimiento.
1. Necesitamos el script que va a procesar los datos y nos va a retornar una respuesta de exito o error apenas procese los datos.
Por lo general se emplean archivos como registro.php.
2. Lista de parametros que se le envian al script.
3. Para este ejemplo, se van a enviar los datos utilizando como método de envío POST. Los datos viajan al servidor transparente al usuario.
4.Vamos a realizar una validación previa al envío.
5. Utilizaremos javascript para mostrar mensajes de error y confirmación.
6. Como adición, se incluye un método para tabular los campos correctamente, para resaltar el campo actual y para limpiar los campos apenas se realiza un envío exitoso.
Desarrollo
1. suponemos que el swcript que va a procesar los datos se llama: registro.php.
2. La lista de parámetros que recibe es:
nombre, cedula, telefono, direccion, ciudad, email, respuesta
Código para la validación previa al envío:
Se puede descargar el archivo de validación acá
Actionscript:
-
//importamos una librería para realizar validadciones a campos input
-
#include "as/form_validators.as"
-
-
function enviar() {
-
//nombre, mensaje, obligatorio, email, numero
-
ans1 = t1.validateInput("nombre","", true, false, false);
-
ans2 = t2.validateInput("cedula","", true, false, true);
-
ans3 = t3.validateInput("telefono","", true, false, true);
-
ans4 = t4.validateInput("direccion","", true, false, false);
-
ans5 = t5.validateInput("ciudad","", true, false, false);
-
ans6 = t6.validateInput("email","", true, true, false);
-
ans7 = t7.validateInput("respuesta","", true, false, false);
-
-
trace("enviar");
-
be.enabled = false;
-
if(ans1 && ans2 && ans3 && ans4 && ans5 && ans6 && ans7)
-
{
-
okSend();
-
}
-
else{
-
-
msg = "Verifica los siguientes datos: \n";
-
-
if(!ans1)
-
msg += "Nombre\n";
-
if(!ans2)
-
msg += "Cedula\n";
-
if(!ans3)
-
msg += "Teléfono\n";
-
if(!ans4)
-
msg += "Dirección\n";
-
if(!ans5)
-
msg += "Ciudad\n";
-
if(!ans6)
-
msg += "Email\n";
-
if(!ans7)
-
msg += "Respuesta\n";
-
-
ExternalInterface.call("msgBox",msg);
-
be.enabled = true;
-
}
-
}
t1, t2,.., t7 son los nombres de los campos input de texto.
Aplicamos la función: "validateInput" a cada campo, pasandole los siguientes parámetros que nos permite controlar la validación de cada campo en específico:
nombre: Nombre del campo
mensaje: No es necesario, se utilizaría para una validación adicional, con mensajes.
obligatorio: true o false, si el campo es obligatorio.
email: true o false, si el campo contiene un correo.
numero: true o false, si el campo contiene solamente numeros.
Creamos un botón para enviar el formulario, este tendra el siguiente código:
Actionscript:
-
on(release)
-
{
-
enviar();
-
}
Apenas se pulsa el botón se deshabilita, para evitar envíos masivos del mismo formulario. (Cuando la respuesta del servidor no es muy rápida)
Si la validación no tiene problemas, entonces ejecutamos el envio.
llamando a la siguiente función:
Actionscript:
-
function okSend()
-
{
-
//Minimo un correo porque hay que referir
-
sal_registro = new LoadVars();
-
int_respuesta = new LoadVars();
-
int_respuesta.onLoad = function(success:Boolean) {
-
if (success)
-
{
-
// error=true todo bien, respuesta del script.
-
if(this.error.charAt(0)=='f')
-
{
-
msg = "Mensaje de exito";
-
ExternalInterface.call("msgBox",msg);
-
clearFields(); //Limpiamos los campos, apenas hay un envío exitoso
-
-
}
-
else
-
{
-
msg = "Mensaje de error del script";
-
ExternalInterface.call("msgBox",msg);
-
}
-
}
-
else
-
{
-
msg = "Mensaje de error de conexión con el servidor u otros problemas.";
-
ExternalInterface.call("msgBox",msg);
-
-
}
-
be.enabled = true;//Habilitamos el botón para un nuevo envío.
-
};
-
-
url = "registro.php";
-
sal_registro.nombre = t1.text; //Adjuntamos los valores de los campos.
-
sal_registro.cedula = t2.text;
-
sal_registro.telefono = t3.text;
-
sal_registro.direccion = t4.text;
-
sal_registro.ciudad = t5.text;
-
sal_registro.email = t6.text;
-
sal_registro.respuesta = t7.text;
-
sal_registro.rand = Math.random(); //Para evitar que la cache nos envíe datos viejos
-
sal_registro.sendAndLoad(url,int_respuesta,"POST"); //Se hace el envío por post.
-
}
Para limpiar los campos llamamos a esta función:
Actionscript:
-
function clearFields()
-
{
-
for(var i=0;i<8;i++)
-
{
-
txt = this["t"+i];
-
txt.text = "";
-
}
-
}
Para mostrar los mensajes en javascript, es necesario que la página que contiene la película swf, tenga el siguiente script:
JavaScript:
-
<script language="javascript">
-
function msgBox(msg)
-
{
-
alert(msg);
-
}
-
-
</script>
Nota, para hacer pruebas locales, es necesario autorizar al archivo swf para que acceda a contenido de internet. Esto se hace por el administrador. O sino subimos los archivos a un servidor para probar.
Esto es lo básico para un envío, a continuación un gallito para cuadrar la navegación utilizando el tab.
Actionscript:
-
tabscontrol = 0;
-
-
for(var i=0;i<8;i++)
-
{
-
txt = this["t"+i];
-
txt.tabIndex = tabscontrol;
-
tabscontrol++;
-
-
txt.onSetFocus = function(){this.border = true;}
-
txt.onKillFocus = function(){this.border = false;}
-
-
}
Nota: Es importante llamar a los campos por nombres genéricos como t1, t2, t3... para poder utilizar las funciones correctamente.
Si tienes alguna duda, posteala para que las demás personas puedan conocer las respuestas a las preguntas frecuentes.
Espero que les sea de mucha ayuda.
Escrito por @lasmovies
\\ tags: action script, as, enviar formulario, flash, form, input, xaca