Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] problema JQueryAjax para form que todavía no existe

Estas en el tema de problema JQueryAjax para form que todavía no existe en el foro de Javascript en Foros del Web. Buenos días, me estoy iniciando en js+ajax que siempre lo había dejado de lado y me encuentro con el siguiente problema. Tengo una función ajax ...
  #1 (permalink)  
Antiguo 30/01/2013, 05:35
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
problema JQueryAjax para form que todavía no existe

Buenos días,

me estoy iniciando en js+ajax que siempre lo había dejado de lado y me encuentro con el siguiente problema.

Tengo una función ajax que me consulta los datos de un pedido y me los muestra en un nuevo formulario.
De ese formulario modifico datos y le doy a actualizar, la idea era que ahí mismo me diga también si se pudo actualizar los datos o no, con ajax.

El problema es que ese formulario no está oculto, sino que simplemente no existe hasta que no se ejecuta la anterior consulta ajax y creo que por eso no funciona. Simplemente me ejecuta el form como cualquier otro. Así es como utilizo los ajax desde JQuery.

Código Javascript:
Ver original
  1. <script language="javascript">
  2.         $(document).ready(function() {
  3.             $('#loading').hide();
  4.             $().ajaxStart(function() {
  5.                 $('#loading').show();
  6.                 $('#modifica').hide();
  7.             }).ajaxStop(function() {
  8.                 $('#loading').hide();
  9.                 $('#modifica').fadeIn('slow');
  10.             });
  11.             $('#formPedido, #formAlbaran, #formFactura').submit(function() {
  12.                 $.ajax({
  13.                     type: 'POST',
  14.                     url: $(this).attr('action'),
  15.                     data: $(this).serialize(),
  16.                     success: function(data) {
  17.                         $('#modifica').html(data);
  18.                     }
  19.                 })
  20.                
  21.                 return false;
  22.             });
  23.             $('#formModPedido, #formModAlbaran, #formModFactura').submit(function() {
  24.                 $.ajax({
  25.                     type: 'POST',
  26.                     url: $(this).attr('action'),
  27.                     data: $(this).serialize(),
  28.                     success: function(data) {
  29.                         $('#modificaMod').html(data);
  30.                     }
  31.                 })             
  32.                 return false;
  33.             });
  34.         })  
  35.         </script>

No se si tendrá que ver con $(document).ready. Tal vez es ese el problema? El primero es el que funciona y el de abajo es el que falla.

Tengo que añadir que la primera consulta ajax antes no me funcionaba, tuve que poner los formularios como hidden y mostrarlos según si se elije pedido, albaran o factura. Antes directamente los generaba según la opción. Es decir que tenía el problema anteriormente citado.

Pero ahora no me queda más remedio que hacerlo así. (O sin ajax claro).

Un saludo y gracias

Vuelvo a editar porque no se si se entenderá bien. Es decir, creo que el problema es que cuando se ejecuta la página el formulario no existe y el document ready de JQuery no encuentra los controles asociados. Luego ese formulario lo genero con ajax+php pero ese nuevo formulario no logro que funcione con un submit vía ajax. No se si hay alguna solución.

Última edición por alyciashape; 30/01/2013 a las 05:43
  #2 (permalink)  
Antiguo 30/01/2013, 07:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: problema JQueryAjax para form que todavía no existe

el ready sólo se ejecuta para cuando el DOM está cargado, pero como tu mismo indicas, cuando la cosa viene por AJAX en ése momento No existe, sino hasta que llegue la respuesta, es por ello lo inútil de establecer un evento desde el domready cuando el objeto ni siquiera existe.

lo que puedes hacer es muy simple, tienes opciones:

usar jQueryLive, aunque últimamente los expertos recomiendan no usarlo

establecer el evento en el success, luego de que añades el formulario proveniente de la respuesta, después de allí si existe
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 30/01/2013, 08:57
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: problema JQueryAjax para form que todavía no existe

Gracias maycolalvarez

Entiendo que en lugar de $(document).ready(function() tengo que poner el selector en onSuccess ?

Como pongo que cuando la otra tenga éxito se 'prepare' la otra funcion?

He cambiado la función de sitio y si la pongo con el formulario y genero también el <script> al vuelo funciona también, como era de esperar. Pero no se. Es bastante cutre la solución no?
  #4 (permalink)  
Antiguo 30/01/2013, 09:27
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: problema JQueryAjax para form que todavía no existe

Cita:
Iniciado por alyciashape Ver Mensaje
Gracias maycolalvarez

Entiendo que en lugar de $(document).ready(function() tengo que poner el selector en onSuccess ?

Como pongo que cuando la otra tenga éxito se 'prepare' la otra funcion?

He cambiado la función de sitio y si la pongo con el formulario y genero también el <script> al vuelo funciona también, como era de esperar. Pero no se. Es bastante cutre la solución no?
Por que usar un form inexistente?, crealo, mantenelo oculto con hide(), llenalo con los datos y mostralo
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 30/01/2013, 09:34
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: problema JQueryAjax para form que todavía no existe

Porque puede variar mucho su contenido. Bueno, ya lo he solucionado con success. Muchas gracias a ambos.
  #6 (permalink)  
Antiguo 30/01/2013, 11:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: problema JQueryAjax para form que todavía no existe

Cita:
Iniciado por alyciashape Ver Mensaje
Porque puede variar mucho su contenido. Bueno, ya lo he solucionado con success. Muchas gracias a ambos.
bueno, no se si el success general sirva, supongo que es una especie de singleton como en ExtJS, no sé, pero puedes usar el success correspondiente al ajax que usas para mostrar el form
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: ajax, formulario, funcion, html, jquery, js
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 08:28.