Hacer un sendAndLoad en Actionscript 3.0
sendAndLoad permitía enviar información a un fichero externo (PHP, ASP o similar) y recibir después información de este. En AS3 ya no se puede utilizar esta función, pero en su lugar se puede utilizar el siguiente código (en el ejemplo envio dos numeros a un PHP, que los sumará y devolverá el resultado). El php puede ser como este:
1 2 3 4 5 6 7 8 |
<?php $numero1 = htmlentities($_POST[numero1]); $numero2 = htmlentities($_POST[numero2]); $suma = $numero1 + $numero2; echo "suma=" . $suma; ?> |
Y el Actionscript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
//Importo las clases necesarias import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.sendToURL; //Almaceno la url que vamos a cargar var url:String = "http://www.esedeerre.com/ejemplos/as2php/intercambio/sumar.php"; //Creo las variables para enviar y recibir la informacion var enviar:URLRequest = new URLRequest(url); var recibir:URLLoader = new URLLoader(); //Creo la variable que va a ir dentro de enviar, con los campos que tiene que recibir el PHP. //En este caso son numero1 y numero2 var variables:URLVariables = new URLVariables(); variables.numero1 = 7; variables.numero2 = 10; //Indico el método por el que se va a enviar la información. enviar.method = URLRequestMethod.POST; //Indico que voy a enviar variables dentro de la petición enviar.data = variables; //Indico el formato de la información que se va a recibir como respuesta recibir.dataFormat = URLLoaderDataFormat.VARIABLES; //Añado listeners a recibir, para un posible error y una respuesta. recibir.addEventListener(Event.COMPLETE,Respuesta); recibir.addEventListener(IOErrorEvent.IO_ERROR,HayError); //Hago la petición al PHP recibir.load(enviar); //Funcion que se ejecuta al recibir una respuesta del PHP function Respuesta(event:Event){ trace("El resultado es : " + recibir.data.suma); } //Función que se ejectuta cuando no se puede cargar el PHP function HayError(event:IOErrorEvent):void { trace("Error al cargar la url"); } stop(); |
COMENTARIOS
Gracias por el ejemplo .. muy util y facil de usar..
oye y como harias el php.. si no es mucha molestia =)
gracias!
Buenas, he editado el post para añadir el código php.
Lo tienes al principio
@Arrikitawn
El ejemplo hace justo lo que necesitas, envia un par de variables a un fichero externo, en AS3. Cual es tú duda?
Buenas, estoy un poco perdido con el AS3 pero si solo quisiera recibir una variable de un ASP dentro de mi formulario realizado en flash como lo tendría que hacer? ya no puedo utilizar el objeto LoadVars()por lo que he leido, me podrías hacer cinco céntimos?
Gracias
Yo tengo un problema con cargar variables de un PHP, el problema es ke solo puedo carga una.
Este es el codigo:
loader.addEventListener(Event.COMPLETE, mostrar);
function mostrar(e:Event){
try{
var variables = new URLVariables(e.target.data);
trace(variables.mensaje);
//esta es la sgte variable, la ke no puedo cargar
//solo puedo cargar una, en el PHP uso el caracter «&»
//para las demas variables, pero aun asi, no puedo cargarla
trace(variables.val);
}catch(error:Error){
trace(e.target.data);
}
}
uups, sorry ke me salio todo junto
ya intentenle tambien no sean huevones, ahi ya pusieron todo el codigo, como recivir,enviar varias variables es cosa de pensarle un poco, yo ando igual de perdido pero tambien casi casi quieren que les resuelva su chamba… noma..
¡Me has salvao la vida!, gracias, después de todo As3 no es un infierno.
Gracias! sos un idolo!
Hola gracias por ayudar, como hago esto si son muchas variables?
//Hago la petición al PHP (esto es As3)
recibir.load(enviar);
//muestro el resultado (esto es PHP)
echo «suma».$suma; /// es decir resultados de division, resta, etc al mismo tiempo… Como los recibo en as3, gracias o un ejemplo me serviria tambien gracias…
Si pongo trace, me muestra el dato en output de flash pero no en el swf… usè esto:
//– importamos las clases necesarias
import flash.net.*;
import flash.events.*;
import flash.text.TextField;
//– creamos una instancia de URLLoader para info externa
var loader:URLLoader=new URLLoader();
//– tipo de info a recibir
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
//– cual es el archivo que cargaremos
loader.load(new URLRequest(«http://www.estelarisradio.net/mostrar.php»));
//– listener para cuando la carga este completa
loader.addEventListener(Event.COMPLETE,carga);
//– funcion a ejecutarse
function carga(event:Event) {
var loader:URLLoader= URLLoader(event.target);
//– creamos el campo de texto donde se mostrara la info del php
var texto:TextField=new TextField();
texto.text=String(loader.data.dato1);
var texto2:TextField=new TextField();
texto.text=String(loader.data.dato2);
texto.autoSize=»left»;
//– mostramos el campo de texto
addChild(texto);
texto2.autoSize=»left»;
//– mostramos el campo de texto
addChild(texto2);
}
Pero a la hora de funcionar solo recupera la primera variable, què estoy haciendo mal?
Gracias.
Buenas!
al utilizar la url del ejemplo el script funciona perfectamente pero al cambiar a la de mi localhost
(var url:String = «http://localhost/WEB/FORMULARIO.php»;)
me tira el siguiente error
Error: Error #2101: La cadena transmitida a URLVariables.decode() debe ser una cadena de consulta con formato URL codificado y pares nombre/valor.
El php que yo utlizo es calcado al del ejemplo. Tengo instalado en mi ordenador lo siguiente: appserv-win32-2.5.4a.
Alguien tiene idea de que puede pasar.
Muchas Gracias
Muy bueno el tutorial. Super simple y entendible!
A mi me dió el mismo error #2101 de formato de la cadena URL y lo solucioné cambiando
«recibir.dataFormat=URLLoaderDataFormat.VARIABLES;»
por
«recibir.dataFormat=URLLoaderDataFormat.TEXT;»
Por alguna razón recibir.dataFormat = URLLoaderDataFormat.VARIABLES; devuelve un error en ambiente local pero no funciona en MAMP, pero recibir.dataFormat = URLLoaderDataFormat.TEXT; funciona perfecto en ambiente local pero no anda bien en MAMP.
Recomiendo probar los dos si hay problemas de recepción de datos desde el php.
e disculpa pero intente el codigo en AS 3.0 y no sale, no se si me podrias enviar el el php y el flv
an disculpa me diero una tarea de quitsorty codigo secuencial y binario
*******************************
* —————————-*
* PROYECTO FINAL ALGORITMICA I*
* —————————-*
* *
* ORDENAR: *
* Quick Sort *
* Insercion *
* Burbuja *
* *
* BUSCAR: *
* Secuencial *
* Binario *
* *
* EXAMEN jueves 18/02/10 *
* EXAMEN FINAL *
*******************************
tengo que ordenar 10 letras cualquieras por los tres metodos en un solo trabajo con tres botones para ordenar y un boton para busca por favor aver si me ayudas con mi tarea
ayudame para que el ph funcione en appeserf
hola manes kisiera k me ayuden en mi tares de diseño m tengo otras pero esas y las ago el php del ejemplo no me funca bn algien podria ayudar plsssssssssssssssssssssssssssssssssssssssssssssssssssss
Sos grande esedeerre, muxas gracias
Muchas gracias, perfectamente entendible y aplicable.
Bien? tengo un problema, con el formato en que se devuelve el valor o las variables q necesito del PHP, si lo dejo tal cual está escrito aqui en el php.
echo ?datos=? . $info; al momento de escribirlo.
trace(?El resultado es : ? + recibir.data.datos);
me sale ?undefined?, si lo coloco como se solia colocar con el estandar MIME, en ActionScript 2.0, en el php.
echo ?&datos=? . $info; al momento de escribirlo. me da el siguiente Error:
Error: Error #2101: La cadena transmitida a URLVariables.decode() debe ser una cadena de consulta con formato URL codificado y pares nombre/valor.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.net::URLLoader/onComplete()
Estoy en proceso de trancisión hacia Asc 3, por lo que esto se me hace un poco confuso? Podria despejar mis dudas?? Favor escribir a mi correo: f_varga@hotmail.com Gracias?
Hola, yo tambien con eso de «undefined». cuando lo probaba en local mediante «localhost» me salia lo de «undefined» en el resultado. hice un cambio en el codigo php de ejemplo y ya me sale todo bien:
hay que cambiar estas dos lineas
$numero1 = htmlentities($_POST[numero1]);
$numero2 = htmlentities($_POST[numero2]);
por:
$numero1 = $_POST[«numero1»];
$numero2 = $_POST[«numero2»];
quizas esto se deba a la version php que tenga instalado cada servidor
Bueno vamos a mirar si funciona, si llega a ser asi volvere a escribir y a felicitarte pero por lo que leo deberia funcionar :)
BUeno pues perfecto, pero me aparece en salida undefined, creo que podria ser error del php. Como me podrian ayudar???
buenisimo viejo me sirvio al 100%
he hecho todo ese ejemplo pero me muestra el codigo php en lugar los valores reales.
Tengo un problema, estoy realizando envíar mail con flash pero
Cuando hago la peticion al PHP
recibir.load(enviar);
ese enviar lo tengo como boton
este es el código:
import flash.display.Sprite;
import flash.net.URLRequest;//Rescata URL
import flash.net.URLLoader;//Carga de datos
import flash.net.URLVariables;//Maneja variables
import flash.net.sendToURL;//Exporta datos
//URL DONDE SE VA A CARGAR LOS DATOS
var url:String =»../Contactenos.php»;
//VARIABLES PARA ENVIAR Y RECIBIR
var enviodatos:URLRequest = new URLRequest(url);
var recibodatos:URLLoader = new URLLoader();
//DATOS QUE SE VAN A CARGAR
var datos:URLVariables = new URLVariables();
datos.nombre = nombre_txt.text;
datos.email = email_txt.text;
datos.mensaje = mensaje_txt.text;
//DEFINO EL METODO DE ENVÍO
enviodatos.method = URLRequestMethod.POST;
//INDICO LAS VARIABLES A ENVIAR
enviodatos.data = datos;
//FORMATO DE LA INFORMACIÓN A RECIBIR
recibodatos.dataFormat = URLLoaderDataFormat.VARIABLES;
//LISTENER A RECIBIR, PARA MENSAJE DE RESPUESTA
recibodatos.addEventListener(Event.COMPLETE,Respuesta);
recibodatos.addEventListener(IOErrorEvent.IO_ERROR,HayError);
//PETICION PHP DE ENVIO
recibodatos.load(BtnEnviar);
//FUNCION QUE ME EJECUTA LA RESPUESTA RECIBIDA DE PHP
function Respuesta(event:Event)
{
trace(recibodatos.data.estado_txt);
}
//FUNCION DE ERROR EN LA CARGA A PHP
function HayError(event:IOErrorEvent):void
{
trace(«Error en la carga de datos»);
}
stop()
Cuál es mi error:
El sistema me muestra
1067: Implicit coercion of a value of type flash.display:SimpleButton to an urelated type flash.net:URLRequest
Gracias por la ayuda que me puedan brindar…
hola, mira, tengo esto:
unas fotos en un swf cada una en un fotograma.
la descripcion de las fotos esta debajo del swf en un html.
cuando cambio de foto cambia el html.
debe conservarse el avance en el swf mostrando la foto actual, pero no es asi,
como hago para que al cambiar a una nueva pagina el archivo swf conserve su estado pero cambie el texto en html??
Hola estoy en el paso de as2 a as3, el gran problema que tengo es hacer las consultas a la base de datos. tienes algun ejemplo de eso?
Sale undefined…
Sale undefined…
Si hago una prueba y hago un trace(«El resultado es : » + recibir.data) me imprime el codigo de mi php.
El resultado es : %0A%3C%3Fphp%0A%0A%24numero1%20=%20htmlentities%28%24%5FPOST%5Bnumero1%5D%29%3B%0A%0A%24numero2%20%3D%20htmlentities%28%24%5FPOST%5Bnumero2%5D%29%3B%0A%0A%24suma%20%3D%20%24numero1%20%20%20%24numero2%3B%0A%0Aecho%20%22suma%3D%22%20%2E%20%24suma%3B%0A%0A%3F%3E
Claro esta que si le agrego el .suma me asle undefined.
A mi tambien me sale undefined…. no es por huevon ni nada, pero en verdad ando trabado en esto…
Agradeceria cualquier idea de por que creen que nos este saliendo «undefined».
Saludos!
Me gustaria saber como se realizaria en el caso en el que se hiciera la petición de enviado desde un swf y se recibiera el resultado en otro.
Un saludo y muchas gracias por la info.
hola a todos muy buena la información, ahora necesito sacar na variable tipo texto, Cómo hago? xq no me deja de esta manera…..
muchas gracias
DEJA TU COMENTARIO