Esperar a respuesta de AJAX

Iniciado por sexto, 23 Agosto 2012, 13:33 PM

0 Miembros y 1 Visitante están viendo este tema.

sexto

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.

Spider-Net

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 (javascript) [Seleccionar]
miFuncion ("parametros de la funcion", function(){
  funcionCallback();
});

sexto

Estás son las dos funciones:

//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...

sexto

Vale, ya lo he conseguido. Muchas gracias.