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

callback de ajax :: Solucionado

Estas en el tema de callback de ajax :: Solucionado en el foro de Frameworks JS en Foros del Web. Cuando hacemos una llamada por ajax (GET en mi caso) y recibimos html, tenemos un callback llamado success. Pero si uno intenta acceder al nuevo ...
  #1 (permalink)  
Antiguo 03/03/2010, 17:34
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
callback de ajax :: Solucionado

Cuando hacemos una llamada por ajax (GET en mi caso) y recibimos html, tenemos un callback llamado success. Pero si uno intenta acceder al nuevo html desde success, quizas no pueda porque el DOM aún no se renueva cuando se dispara una cadena de eventos.

Yo estaba convencido de que podía retardar las llamadas con sync:false , hasta que el DOM se actualizase. Pero veo que no. Solo puedo hacer un alert con el nuevo html al retardarlo con setTimeout(), lo cual es horrible. Como hacen ustedes?

Cita:
$.ajax({
url: 'libreria/login/loginForm.php',

success: function(data) { $.jGrowl(data,{life:3000}); },

complete: function() { setTimeout('alert($("#logueate").attr("name"));',1 000); }

});
nota: estaba usando $.get(), pero para tener más opciones intenté con $.ajax()

Última edición por mayid; 03/03/2010 a las 19:41
  #2 (permalink)  
Antiguo 03/03/2010, 18:47
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: callback de ajax

NOta: lo que retarda la inyección del nuevo html en el DOM, probablemente, sea el uso de jgrowl (una caja tipo lightbox en donde imprimo mi html). Pero muchas veces pasa que antes de que se actualice el DOM la función sigue adelante. Y setTimeout() no es una solución digna, que digamos.
  #3 (permalink)  
Antiguo 03/03/2010, 19:40
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: callback de ajax

Ahora estoy viendo más claro. Incluí el script dentro del archivo que estoy trayendo, así se ejecuta naturalmente, sin necesidad de callbacks.

Cita:
<script type="text/javascript">
$("#logueate .boton").click(function() {
$.post($("#logueate").attr("action"), $("#logueate").serialize(), function(data) { $.jGrowl(data);});
return false;
});
</script>
  #4 (permalink)  
Antiguo 04/03/2010, 07:22
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Respuesta: callback de ajax :: Solucionado

ahora veo lo que querías hacer mas claro. yo uso mas el $.ajax que $.post pero algo sencillo funciona muy bien:

Código Javascript:
Ver original
  1. jQuery.post( url, [ data ], [ success(data, textStatus, XMLHttpRequest) ], [ dataType ] )

como ves, el tercer parámetro es el callback de lo que pasa cuando la llamada se ejecuta.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...
  #5 (permalink)  
Antiguo 04/03/2010, 08:50
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: callback de ajax :: Solucionado

Cita:
como ves, el tercer parámetro es el callback de lo que pasa cuando la llamada se ejecuta.
Cita:
[ success(data, textStatus, XMLHttpRequest) ]
Success? Conocía success(data), pero los otros dos parametros no tengo idea de qué devuelvan: textStatus, XMLHttpRequest

Etiquetas: ajax, solucionado
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:32.