Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Hay problemas con AJAX y formularios dinámicamente creados?

Estas en el tema de Hay problemas con AJAX y formularios dinámicamente creados? en el foro de Frameworks JS en Foros del Web. Que tal, he estado teniendo problemas al pretender rescatar los valores de campos creados mediante AJAX y que fueron insertados en un formulario creado de ...
  #1 (permalink)  
Antiguo 14/09/2006, 16:57
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
De acuerdo Hay problemas con AJAX y formularios dinámicamente creados?

Que tal, he estado teniendo problemas al pretender rescatar los valores de campos creados mediante AJAX y que fueron insertados en un formulario creado de manera dinámica.

Intentaré darme a entender...

Tengo 7 campos en un formulario (select,select,texto,text,checbox,select,textarea) , pero para crear este formulario, antes el usuario pudo decidir cuantas veces debe repetirse esta información, por lo cual estos campos (a excepcion de los dos primeros, los cuales nombro como name="campo$i" con id="campo$i") los creo como arreglos de la manera name="campo[]".

En el método onChange de la primera lista mando a llamar a un AJAX que recarga la siguiente lista.

Como estas dos listas pueden repetirse "n" veces, yo igualmente le pongo un id con el valor consecutivo de $i al nombre de la celda donde se encuentra la segunda lista, y cuando mando ejecutar la función que hace la carga de esta segunda lista, mando el valor de "i" para saber sobre cual elemento cargar la nueva lista.

Todo esto me funciona de manera excelente, no importa cuantas veces se repita, el AJAX actúa llenando la lista que le corresponde sin afectar las restantes.

Para hacer el envío del formulario ocupo el tradicional SUBMIT de html en método POST.

En el archivo que recibe la información (que ciertmanente es el mismo) pregunto si existe la variable del SUBMIT y si esto es correcto, hago que me imprima el arreglo de POST, es aquí donde detecto el error ya que...

IE me muestra los datos completos con los valores de las "n" listas que fueron creadas mediante AJAX.

Sin embargo con Opera y Firefox los valores de estas listas nunca aparecen en el arreglo, simplemente se pierden, nunca se pasan.

De ahi me pregunto si existirá algún problema entre formularios creados de manera dinámica y AJAX, o cual es el problema de Firefox y Opera que no me permiten llevarmelos.

Agradeceré cualquier ayuda.

Saludos!
  #2 (permalink)  
Antiguo 14/09/2006, 17:07
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

No sé si será la solución, pero no comentas nada si creas en los elementos nuevos el atributo name... explorer muchas veces confunde el comportamiento de los nombres con el comportamiento de los id's, y en el caso concreto de los formularios, los valores se envían siempre que tengan definido el atributo name...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 15/09/2006, 12:26
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
Hola caricatos, muchas gracias por tu aportación.

Si defino el campo name, que de hecho es el mismo que el de id, es decir, ambos atributos de ese nuevo combo son

echo '<select name="tipo$i" id="tipo$i>'

Alguna vez había leído un poco algo sobre lo que me comentas en un libro sobre AJAX y PHP, sobre que a veces Explorer confundía, pero el libro dice algo como que "No pongas un nombre de elemento con el mismo nombre de su etiqueta", es decir, no pongas <table id="table">, o por lo menos eso entendí yo.

Quizá debería probar a que el name y el id no se llamaran igual, ¿será?
  #4 (permalink)  
Antiguo 15/09/2006, 14:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Cita:
Iniciado por yacatl Ver Mensaje
Hola caricatos, muchas gracias por tu aportación.

Si defino el campo name, que de hecho es el mismo que el de id, es decir, ambos atributos de ese nuevo combo son

echo '<select name="tipo$i" id="tipo$i>'
¡Un momento...! ¿Ajax?...

Se supone que ajax devuelve texto plano o en formato xml y estás mostrando html...

Pensaba que los elementos los creabas con el DOM... ¿o usas innerHTML?...

Perdona, pero veo pocos datos... y apriori algo incoherentes (supongo que lo que no se ve explica lo que no entiendo...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 18/09/2006, 17:20
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
Pues si, los creo con:

contenedor.innerHTML = ajax.responseText

donde contenedor es la celda donde pinto la lista. Pero siempre lo he hecho así y siempre me ha funcionado.

Lo que tú me dices es que si no devuelvo solo texto no puedo contruir elementos html a menos que lo haga mediante el DOM de PHP o mediante el regreso de un XML y lo parsee con el DOM de Javascript?

Que extraño, siempre lo he utilizado de esa manera.

Que al decir

Código:
cargador.innerHTML = ajax.responseText
no estoy diciendo que el texto que me devuelva lo tome como HTML?

Saludos y una vez más, gracias por tomarte el tiempo.
  #6 (permalink)  
Antiguo 18/09/2006, 19:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 37
Antigüedad: 17 años, 7 meses
Puntos: 0
El problema que tenes seguro que es como dijo caricatos te faltan los name's en los objetos. Los id's son para identificar los objetos dentro de un formulario, no para enviar info por post.

@caricatos, creo que cuando usa ajax, a lo que se refiere es al viejo remote scripting. con combos anidados. Da igual que lo use con XML, o TEXT, aunque obviamente, debe hacer validaciones de caracteres si usas text, y es muy limitado.
  #7 (permalink)  
Antiguo 19/09/2006, 12:11
 
Fecha de Ingreso: marzo-2006
Mensajes: 22
Antigüedad: 18 años, 1 mes
Puntos: 0
hola! pues sobre el tema, el problema no son los nombre de los objetos ni los id's, ya que yo presento la misma situacion desde hace dias, y si tengo todos mis objetos con nombre y id, ya expuse en el foro mi problema con todo mi codigo, para explicarse mejor. Pero aun no he podido dar con lo que causa esta perdida de valores mediante el envio...si alguien puede ayudarnos, por favor...gracias!
  #8 (permalink)  
Antiguo 19/09/2006, 12:13
 
Fecha de Ingreso: septiembre-2006
Mensajes: 37
Antigüedad: 17 años, 7 meses
Puntos: 0
Donde esta el codigo?
  #9 (permalink)  
Antiguo 19/09/2006, 12:47
 
Fecha de Ingreso: marzo-2006
Mensajes: 22
Antigüedad: 18 años, 1 mes
Puntos: 0
aqui en el foro, con el tema:

Ajax no funciona en firefox, alguien puede ayudarme porfavor!

como 6 u 8 temas abajo de este...gracias!
  #10 (permalink)  
Antiguo 20/09/2006, 07:07
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Ajax si funciona con firefox...

try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); <- En caso de que no sea el IE
} catch(e) {
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); <- En caso de que sea el IE...
} catch(e) {
xmlhttp = false;
}
}
  #11 (permalink)  
Antiguo 22/09/2006, 13:04
 
Fecha de Ingreso: septiembre-2002
Ubicación: México
Mensajes: 356
Antigüedad: 21 años, 7 meses
Puntos: 0
Cita:
Iniciado por at_elah Ver Mensaje
El problema que tenes seguro que es como dijo caricatos te faltan los name's en los objetos. Los id's son para identificar los objetos dentro de un formulario, no para enviar info por post.
Bueno, bueno, tan poco es que soy un neofito, se perfectamente que función tiene el id dentro de las etiquetas de los elementos, pero no me falta el nombre, antes ya había puesto que lo hago de esta manera:

echo '<select name="tipo$i" id="tipo$i>'

Cita:
@caricatos, creo que cuando usa ajax, a lo que se refiere es al viejo remote scripting. con combos anidados. Da igual que lo use con XML, o TEXT, aunque obviamente, debe hacer validaciones de caracteres si usas text, y es muy
limitado.

Y bueno, tampoco dije que AJAX no sirviera en Firefox. Mi pregunta era si había algún problema conocido entre la creación de formularios creados de manera dinámica y AJAX en Firefox.

No soy el gran conocedor de AJAX, aunque si he estado haciendo mi tarea, y anteriormente no he tenido otros problemas como este, salvos los casos exepcionales en que hay diferencia entre los navegadores, pero nada más.

El caso es que seguiré buscando. Muchas gracias a todos!

Saludos!
  #12 (permalink)  
Antiguo 23/09/2006, 06:09
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Pues si te funciona en IE, debes estar haciendo algo que no le agrada a firefox... Solo es calentarse un poco la cabeza hasta que las neuronas hagan sinapsis :P

Quizá al verificar si se hizo el submit como tú dices causa el error...

en el PHP supongo que lo haces así...

if(isset($_POST['nombreSubmit']))...

Quizá no estás pasando por ajax ese dato...

var nSubmit = document.getElementById('nSubmit');

ajax.send("nombreSubmit="+nSubmit.......);

O talvez te serviría hacer algo así...

<form method="post" action="" onSubmit="funcionAjax(pasarDatos); return false;">

Bueno... Realmente nosé si servirá algo de lo que te dije... Nos vemos =P
  #13 (permalink)  
Antiguo 24/09/2006, 05:26
 
Fecha de Ingreso: mayo-2005
Mensajes: 37
Antigüedad: 19 años
Puntos: 0
Hola. Yo tuve ese mismo problema hace tiempo, un formulario con campos creados dinámicamente, que funcionaba a la perfección en IE y fallaba en Firefox. La solución a mi problema fue sencilla, ubicar el <form... y el </form> en los lugares adecuados según la estructura del html, ya que tenía el cierre del formulario colocado entre un </tr> y la apertura en en otro nivel distinto.

No se si será por eso mismo pero es otro camino para investigar.

Suerte y un saludo.
__________________
Dominios en venta: dial.es - disco.es
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 08:55.