En ActionScript 2, si queremos cargar datos de cualquier medio externo, tenemos los métodos load de las distintas clases (XML, MovieClipLoader, LoadVars...) que nos piden como parámetro un valor String con la URL que vamos a cargar.
En Actionscript 3 esto ha cambiado y ahora todas las clases que pueden cargar datos de medios externos nos piden como parámetro un mucho más potente URLRequest, cuya principal ventaja es que en la misma consulta podemos enviar variables por el método que queramos (POST o GET), una característica particularmente útil para webservices o para pasar otras variables con la clase FileReference.
Para enviar y recuperar variables (Como LoadVars), se usa la clase URLVariables.
Por ejemplo, si queremos abrir una URL enviándole una variable por el método POST tendremos que usar el método flash.net.navigateToURL, que abre la ventana que hemos pedido en la propiedad url, con las variables en formato URLVariables de la propiedad data, y con el método de la propiedad method de nuestro URLRequest:
Ejemplo MXML en Flex 2.0
Código :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import flash.net.*
private function enviar():void {
var req:URLRequest=new URLRequest("archivo.php");
req.method=URLRequestMethod.POST;
var vars:URLVariables=new URLVariables;
vars.txt=txt.text;
req.data=vars;
navigateToURL(req,"_blank");
}
]]>
</mx:Script>
<mx:TextInput x="10" y="10" id="txt"/>
<mx:Button x="10" y="40" label="Enviar" click="{enviar()}"/>
</mx:Application>Si queremos procesar y recuperar las variables que hemos enviado, tendremos que usar la llamada al método load de un URLLoader y encargarnos de que el servidor devuelva las variables en este formato:
Para probar, podemos escribir algo como esto en php:
Código :
<?php
foreach ($_POST as $k=>$a){
echo '&'.$k.'='.$a.'queVieneDelServidor';
}
?>Y en Flex:
Código :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import flash.net.*
import flash.events.*
private function enviar():void {
var req:URLRequest=new URLRequest("archivo.php");
req.method=URLRequestMethod.POST;
var vars:URLVariables=new URLVariables;
vars.nombre=escape(nombre_txt.text);
vars.apellidos=escape(apellidos_txt.text);
vars.email=escape(email_txt.text);
req.data=vars;
var ldr:URLLoader=new URLLoader();
ldr.load(req);
ldr.addEventListener(Event.COMPLETE,onVarsLoaded);
}
private function onVarsLoaded(event:Event):void{
var retVars:URLVariables = new URLVariables(event.target.data);
nombre_lbl.text=unescape(retVars.nombre);
apellidos_lbl.text=unescape(retVars.apellidos);
email_lbl.text=unescape(retVars.email);
}
]]>
</mx:Script>
<mx:Button x="10" y="128" label="Enviar" click="{enviar()}"/>
<mx:Form x="10" y="10">
<mx:FormItem label="Nombre">
<mx:TextInput id="nombre_txt"/>
</mx:FormItem>
<mx:FormItem label="Apellidos">
<mx:TextInput id="apellidos_txt"/>
</mx:FormItem>
<mx:FormItem label="Email">
<mx:TextInput id="email_txt"/>
</mx:FormItem>
</mx:Form>
<mx:Form x="10" y="158">
<mx:FormItem label="Nombre">
<mx:Label id="nombre_lbl"/>
</mx:FormItem>
<mx:FormItem label="Apellidos">
<mx:Label id="apellidos_lbl"/>
</mx:FormItem>
<mx:FormItem label="Email">
<mx:Label id="email_lbl"/>
</mx:FormItem>
</mx:Form>
</mx:Application>

Por chanofankero el 23 de Julio de 2007
O no haria falta esta instruccion?
Saludos,
Código :
Saludos
Por Jose el 05 de Junio de 2008
Por SomeNick (stormvideo el 25 de Febrero de 2009
En la otra pagina, si es PHP, los recibes con $_REQUEST. Por ejemplo, si enviaste una variable llamada pepe, la recibes en PHP como $_REQUEST['pepe']; Tal como si se tratase de un formulario HTML común y corriente. Saludos!
No funcionaría pasando directamente la variable a urlRequest.data de este modo:
var urlRequest:URLRequest = new URLRequest("phpSqlToXml_fotos.php");
urlRequest.data = id_marca;
urlRequest.method = URLRequestMethod.POST
var urlLoader:URLLoader = new URLLoader(urlRequest);
urlLoader.addEventListener("complete",readXml);
Gracias, un saludo.
Por illo_guay el 19 de Marzo de 2009
Muchas gracias a todos.
Por Miguel el 28 de Octubre de 2009
Por fx el 09 de Julio de 2010