Foros del Web » Creando para Internet » Flash y Actionscript »

Error al enviar un formulario

Estas en el tema de Error al enviar un formulario en el foro de Flash y Actionscript en Foros del Web. Hola, tengo un sencillo formulario de prueba en ActionScript 3, sacado de la ayuda de Adobe con el código siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ActionScript: Ver ...
  #1 (permalink)  
Antiguo 10/06/2010, 11:06
 
Fecha de Ingreso: junio-2010
Mensajes: 51
Antigüedad: 13 años, 10 meses
Puntos: 0
Error al enviar un formulario

Hola, tengo un sencillo formulario de prueba en ActionScript 3, sacado de la ayuda de Adobe con el código siguiente:


Código ActionScript:
Ver original
  1. btenviar.addEventListener(MouseEvent.MOUSE_UP,envia);
  2.  
  3. function envia(event:Event){
  4.     var variables = new URLVariables();
  5.     variables.nombre="Benjamin";
  6.     var request:URLRequest = new URLRequest();
  7.     request.url = "http://localhost/recibir.asp";
  8.     request.method = URLRequestMethod.POST;
  9.     request.data = variables;
  10.     var carga:URLLoader = new URLLoader();
  11.     carga.dataFormat = URLLoaderDataFormat.VARIABLES;
  12.     carga.addEventListener(Event.COMPLETE, completeHandler);
  13.     try {
  14.         carga.load(request);
  15.     }
  16.     catch (error:Error) {
  17.         trace("Unable to load URL");
  18.     }
  19.     function completeHandler(event:Event):void {
  20.         trace(event.target.data.welcomeMessage);
  21.     }
  22. }

Cuando ejecuto el flash me da 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()

He probado a instanciar de distintas maneras las variables y cambiado el modo de asignarlas, pero siempre me genera el mismo error. ¿Alguien puede decirme por qué?

Gracias anticipadas.
  #2 (permalink)  
Antiguo 10/06/2010, 23:35
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Error al enviar un formulario

Hola
intenta cambiar esto
carga.dataFormat = URLLoaderDataFormat.VARIABLES;
por esto
carga.dataFormat = URLLoaderDataFormat.TEXT;

y si persiste, dejalo como estaba antes y comenta
que tienes en el asp
ha, y el link de donde lo sacaste??
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 10/06/2010, 23:46
 
Fecha de Ingreso: febrero-2008
Mensajes: 78
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Error al enviar un formulario

Encontré esto buscando por google, que es lo contrario de lo que quieres hacer, o sea "decodificar" la cadena, pero seguro te servirá para que puedas encontrar la función que hace lo que buscas "codificar" esa cadena agregada a la url:
Mis saludos.

The unescape method in AS 3 has been changed from AS 2. If you want to unescape + (urlencoded whitespace) you have to use the replace method in combination.

var urlencodedString:String = "foo+bar%26param=1";

var badString = unescape(urlencodedString);

var niceString:String = unescape(urlencodedString).replace(/\+/g, " ");

trace(badString) // foo+bar&param=1
trace(niceString) // foo bar&param=1
  #4 (permalink)  
Antiguo 10/06/2010, 23:54
 
Fecha de Ingreso: febrero-2008
Mensajes: 78
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Error al enviar un formulario

Encontre mas info util, mira si creaste el objeto URLVariables y al constructor no le pasaste la cadena con la url, entonces debes llamar a decode() desde posteriormente
fuente:

http://www.adobe.com/livedocs/flash/...Variables.html

http://www.adobe.com/livedocs/flash/...Variables.html
  #5 (permalink)  
Antiguo 10/06/2010, 23:57
 
Fecha de Ingreso: febrero-2008
Mensajes: 78
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Error al enviar un formulario

Ups error de copy paste...
Si lees atentamente esa documentación del link veras que por ahí puede estar la solución.
  #6 (permalink)  
Antiguo 11/06/2010, 11:15
 
Fecha de Ingreso: junio-2010
Mensajes: 51
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Error al enviar un formulario

Hola, gracias por vuestras aportaciones.
Le he echado un vistazo a los links. El segundo ya lo conocía, y he probado con la función unescape de la siguiente manera:

Código ActionScript:
Ver original
  1. var nicevariables:String = unescape(variables).replace(/\+/g, " ");
  2. request.data = nicevariables;

Pero no funcionó. Sin embrago, cambiando la propiedad URLLoaderDataFormat.VARIABLES por TEXT, no me dio error, aunque no cargó la página recibir.asp. El Flash hizo todo correctamente excepto el envío del formulario. Os vuelvo a dejar el script como lo tengo ahora:
Código ActionScript:
Ver original
  1. btenviar.addEventListener(MouseEvent.MOUSE_UP,envia);
  2.  
  3. function envia(event:Event){
  4.     //var variables:URLVariables = new URLVariables("nombre=Franklin");
  5.     var variables = new URLVariables();
  6.     variables.nombre="Benjamin";
  7.     var request:URLRequest = new URLRequest();
  8.     request.url = "http://localhost/pisos/pruebas/EnvioImagenes/swfobject/recibir.asp";
  9.     request.method = URLRequestMethod.POST;
  10.     //var nicevariables:String = unescape(variables).replace(/\+/g, " ");
  11.     request.data = variables;
  12.     var carga:URLLoader = new URLLoader();
  13.     carga.dataFormat = URLLoaderDataFormat.TEXT;
  14.     carga.addEventListener(Event.COMPLETE, completeHandler);
  15.     try {
  16.         carga.load(request);
  17.     }
  18.     catch (error:Error) {
  19.         trace("Unable to load URL");
  20.     }
  21.     function completeHandler(event:Event):void {
  22.         //trace(event.target.data.welcomeMessage);
  23.     txtprueba.text="El envío se ha completado.";
  24.     }
  25. }

Supongo que el envío se realiza con la función carga.load(request); , que cargará las variables y el envío del formulario, pero no lo envía a la página.

Cita:
que tienes en el asp
ha, y el link de donde lo sacaste??
En el asp de momento sólo detecto que han llegado los valores del formulario: Response.Write(Request.Form()), pero como digo, no lo envía a la página, sino que sigue en la que tengo el flash.

El link es de referencia en español para Adobe: [URL="http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cfd.html"]http://help.adobe.com/es_ES/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cfd.html[/URL]

Comentaros que ayer mismo me he comprado un libro de ActionScript de la Editorial Anaya para irme familiarizándome con el lenguaje. Antes tenía hecho algunas cosillas en Flash 8, y algo de ActionScript, y la verdad hay muchas diferencias con el AS2. De momento si alguien me puede ir echando una mano le estaré muy agradecido.

Saludos y gracias por vuestro interés.
  #7 (permalink)  
Antiguo 11/06/2010, 11:48
 
Fecha de Ingreso: febrero-2008
Mensajes: 78
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Error al enviar un formulario

Y probaste con escape en lugar de unescape (estoy sugiriendo ya que apenas conozco as3)
asi:
/* si no te funciona la siguiente linea prueba con la subsiguiente (descoméntala y comenta la actual)*/
var datosUrl:String = escape(variables);
//var datosUrl:String = escape(variables).replace(/\+/g, " ");
request.data = datosUrl;

te voy a hacer una pregunta que quizas esté demas, pero por descartar...
¿estas probándolo dentro de un servidor, por ejemplo tienes instalado el IIS u otro en tu maquina para el asp?

Saludos.
  #8 (permalink)  
Antiguo 11/06/2010, 11:51
 
Fecha de Ingreso: febrero-2008
Mensajes: 78
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Error al enviar un formulario

Del link que pusiste, me fije que lo ocupan tambien asi:
var variables:URLVariables = new URLVariables("name=Franklin");
o sea pasandole las clave/valor al contructor, has probado de ese modo.
  #9 (permalink)  
Antiguo 11/06/2010, 12:08
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Error al enviar un formulario

Hola
Pues copie tu código, pruebo y funciona,
intenta luego del load, navegar
hacia la página, así

Código actionscript:
Ver original
  1. navigateToURL(request);

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #10 (permalink)  
Antiguo 11/06/2010, 14:33
 
Fecha de Ingreso: junio-2010
Mensajes: 51
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Error al enviar un formulario

Hola de nuevo. Gracias a ambos por vuestro interés.

Al final lo he hecho con la función navigateToURL(request,"_self"); para que se abriera en la misma ventana del navegador y funciona correctamente, por lo que la primera fase de mi prueba ya está superada. Ahora quisiera adjuntar una imagen, por lo que el form debe ser como en html enctype="multipart/form-data". Todavía no sé como se hace en ActionScript, por lo que tendré que investigar un poco.

Cita:
Del link que pusiste, me fije que lo ocupan tambien asi:
var variables:URLVariables = new URLVariables("name=Franklin");
o sea pasandole las clave/valor al contructor, has probado de ese modo.
Efectivamente, buscando soluciones encontré más práctico el método de establecer variables del siguiente modo:

Código ActionScript:
Ver original
  1. var variables = new URLVariables();
  2. variables.una="un valor";
  3. variables.dos="otro valor";
  4. variables.otras="otros valores";

Sobre todo cuando trabajas con muchas variables es mucho más práctico.

Gracias una vez más por vuestra paciencia. Habeis sido de mucha utilidad.
  #11 (permalink)  
Antiguo 11/06/2010, 17:22
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Error al enviar un formulario

Hola
Bueno, busca sobre FileReference
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: urlvariables, variables, formulario, actionscript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:03.