Comunidad de diseño web y desarrollo en internet online

Obtener informacion desde php en Actionscript 3

Citar            
MensajeEscrito el 08 Ene 2013 08:41 am
Hola de nuevo comunidad de cristalab.
Sigo aprendiendo poco a poco Actionscript 3, ahorita tengo un problema, que no logro entender del todo bien,¿como puedo obtener informacion desde php(en este caso es solo texto) en AS3?.
El script esta en localhost desde mi laptop(php con Codeigniter), en el cual solo tengo un echo 'envio=Listo';
Segun lo que he encontrado y no logro implementar adecuadamente (no le entiendo muy bien ), es esto:

Código ActionScript :

public function cargar:String{
         var urlVariables:URLVariables = new URLVariables;
         var urlRequest:URLRequest;         
         urlRequest = new URLRequest("http://localhost/as3/lista");                  
         var loader:URLLoader = new URLLoader(urlRequest);         
         loader.dataFormat = URLLoaderDataFormat.VARIABLES;   
         var prueba:String=new String(loader.data.envio);
         return prueba;
      }


En mi controlador en php , tengo esto :

Código PHP :

function lista(){
            echo 'envio=Listo';
      
   }


El metodo lo pongo que retorne, ya que es para un pequeño experimento que ando haciendo en mi proceso de aprendizaje para programar con Flex para dispositivos moviles, quiero traer informacion del servidor para otras cosas,y queria probar como traer un simple texto, el problema es que cuando lo ejecuto me sale esto


TypeError: Error #1010: A term is undefined and has no properties.
at codigo::exper/cargar()[C:\Users\neux\Adobe Flash Builder 4.5\test\src\codigo\proyecto.as:51]
at views::ver_lista/cargar()[C:\Users\neux\Adobe Flash Builder 4.5\test\src\views\ver_lista.mxml:9]
at views::ver_lista/___ver_lista_Button1_click()[C:\Users\neux\Adobe Flash Builder 4.5\test\src\views\ver_lista.mxml:18]



Donde en proyecto.as la linea que marca error es esta:
var prueba:String=new String(loader.data.envio);

¿Que es lo que esta pasando? Como puedo traer un texto desde php a AS3?
Muchas gracias por leer el mensaje

Por neux

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Ene 2013 10:17 am
Hola, lo que tienes que hacer es lo siguiente:

Código ActionScript :

var loader:URLLoader = new URLLoader(urlRequest);         
loader.dataFormat = URLLoaderDataFormat.VARIABLES;   
loader.addEventListener(Event.COMPLETE, init);
function init(e:Event):void 
{
   var retVars:URLVariables = new URLVariables(e.target.data);
        trace(retVars.envio);
}

El tema está en que la llamada no es immediata, y necesitas tener un listener que se ejecute cuando se recibe la información.

Espero que te sirva

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Ene 2013 07:07 pm
Gracias por responder.
He checado la solucion, y ahora no me arroja ningun error (gracias por ello =) ), pero ¿como puedo retornar el valor obtenido con el metodo init?.
En la funcion init se trae el contenido y se ejecuta trace (algo extraño es que en mi consola, dentro del flash builder, no me ejecuta nada) para mostrar, pero lo que queria era traer el contenido y asignarlo a una variable para traerlo al mxml.

Con la solucion que me diste,intente esto:

Código ActionScript :

public function init(e:Event):void 
      {
         var retVars:URLVariables = new URLVariables(e.target.data);
         trace(retVars.envio);
         this.gobackvar=new String(retVars.envio);
      }


Donde gobackvar es una variable global de la clase(declarada asi : var gobackvar:String; , no se si en AS3 sea igual el concepto de variable global a la clase, o tenga que usar una palabra reservada), y en mi metodo hacer algo asi

Código ActionScript :

public function cargar:String{

         var urlVariables:URLVariables = new URLVariables;

         var urlRequest:URLRequest;         

         urlRequest = new URLRequest("http://localhost/as3/lista");                  

         var loader:URLLoader = new URLLoader(urlRequest);         

         loader.dataFormat = URLLoaderDataFormat.VARIABLES;   

        loader.addEventListener(Event.COMPLETE, init);

        return gobackbar;

      }


En mi mxml tengo esto :

Código ActionScript :

<fx:Script>
      <![CDATA[
         import codigo.proyecto;
         public function cargar_php():void{
            var universal:proyecto=new proyecto();            
            resultado.text=universal.cargar();
         }
      ]]>
   </fx:Script>


Donde cargar_php va dirigido en un boton , y resultado es un label.
En pocas palabras al hacer clic en el boton saca de php la informacion desde la clase proyecto en el metodo cargar, y de ahi debe de inicializar la variable gobackbar para mostrarlo en el label.
La cuestion es que al hacer clic, no me muestra nada, ni el trace, ni el cambio del label, ni un error.
¿Que puede ser? El init nunca se ejecuto y la variable esta vacia?

Otra solucion que pense que funcionaria, fue la de hacer el metodo cargar() sin retorno, y en el fx:Script no asignarlo a label directamente, sino ejecutar primero el metodo, y despues traer la variable con el objeto universal , pero aun asi no funciona.

Por neux

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Ene 2013 09:54 pm
Corrijo, en mi respuesta anterior, dentro de la funcion cargar(), escribi mal por error gobackbar, es gobackvar , por si alguno lo ve, fue error de dedo al pasarlo a cristalab, en mi codigo esta correcta la variable, por si alguno piensa que por ahi es el error

Por neux

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Ene 2013 10:29 am
Así no puedes hacerlo, ya que donde intentas devolver gobackvar, ésta no tiene un valor definido todavia.
Tienes que hacer algo tal que así:
Código mxml:

Código ActionScript :

<fx:Script>
      <![CDATA[
         import codigo.proyecto;
         public function cargar_php():void{
            var universal:proyecto=new proyecto();            
            universal.cargar();
         }
         public function setResultado(_msg:String):void{
             resultado.text = _msg;
         }
      ]]>
   </fx:Script>

Código AS:

Código ActionScript :

public function cargar:String{
         var urlVariables:URLVariables = new URLVariables;
         var urlRequest:URLRequest;         
         urlRequest = new URLRequest("http://localhost/as3/lista");                  
         var loader:URLLoader = new URLLoader(urlRequest);         
         loader.dataFormat = URLLoaderDataFormat.VARIABLES;   
         loader.addEventListener(Event.COMPLETE, init);
}
public function init(e:Event):void 
{
         var retVars:URLVariables = new URLVariables(e.target.data);
         trace(retVars.envio);
         this.gobackvar=new String(retVars.envio);
         setResultado(this.gobackvar);
}

Espero que te sirva.

Por Palacio

Claber

198 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.