Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: sexto en 23 Agosto 2012, 13:33 pm



Título: Esperar a respuesta de AJAX
Publicado por: sexto en 23 Agosto 2012, 13:33 pm
Veamos.
Tengo una función en javascript (con jQuery). Hago una llamada a AJAX. Esto me devuelve un valor.
En la respuesta primero llamo a otra función, que me hace otra llamada a AJAX y muestra una tabla (o mejor dicho la actualiza), y después de esa función hago mas cosas.

El caso es que al ser asíncrono, no espera a la respuesta de AJAX de la segunda función para seguir ejecutando la primera.
Y el código que tiene que ejecutar después no lo puedo meter en la respuesta de la segunda...

¿Sabéis como lo puedo hacer? Muchas gracias.


Título: Re: Esperar a respuesta de AJAX
Publicado por: Spider-Net en 23 Agosto 2012, 15:52 pm
No pones ninguna función de las que usas así que no puedo ponerte un ejemplo concreto, pero por ejemplo si quieres que se ejecute una funcionCallback() después de ejecutar una función cualquiera se hace así:

Código
  1. miFuncion ("parametros de la funcion", function(){
  2.   funcionCallback();
  3. });


Título: Re: Esperar a respuesta de AJAX
Publicado por: sexto en 23 Agosto 2012, 16:25 pm
Estás son las dos funciones:
Código:
//Funcion 1:
$('.orderby').click(function () {
        var tabla = $(this).attr('rel');
        $.ajax({
            url:base + 'ajax.php?ac=cambiarDireccion',
            type:'post',
            data:{campoorden:$(this).attr('id')},
            success:function (resp) {
                getTabla(tabla);
                var src = base + 'img/' + resp + '.png';
                $('#imgdireccionorden').attr('src',src);
            }
        });
    });

Funcion 2
function getTabla(tabla) {
    $.ajax({
        url:base + 'ajax.php?ac=getTabla' + tabla,
        success:function (resp) {
            $('#tabla'+tabla.toLowerCase()).html(resp);
            init();
        }
    });
}
Lo primero es un evento pero vamos...
El caso es, cuando la función 1 recibe la respuesta, llama a la función 2 (getTabla()) y luego hace las dos líneas siguientes dentro del success, esa es mi idea. Pero como el llama a la función y mientras hace la otra llamada a AJAX sigue ejecutando, $('#imgdireccionorden') todavía no existe, o bueno, si que existe, pero al hacerse la otra función se sustituye.
No sé si me explico...


Título: Re: Esperar a respuesta de AJAX
Publicado por: sexto en 23 Agosto 2012, 17:28 pm
Vale, ya lo he conseguido. Muchas gracias.