2010-10-20 16 views
15

He visto muchas preguntas y soluciones a problemas como este pero nada me ha funcionado. Tengo esto:Función de devolución de llamada JQuery .load()

function() { 
    $("#bdiv").load("bosses.php #icc10n",function(){ 
     return $("#bdiv").html(); 
    }); 
} 

Pero no está funcionando. Para aclarar, quiero cargar contenido en #bdiv y luego devolver el contenido de #bdiv. Pero parece que se devuelve $("#bdiv").html() antes de que se cargue el contenido, aunque lo haya puesto en una función de devolución de llamada.

+0

¿Puede mostrar el código completo? ¿Por qué está esto en una función anónima? –

Respuesta

37
$("#bdiv").load("bosses.php #icc10n",function(data){ 
    // use the data param 
    // e.g. $(data).find('#icc10n') 
}); 
+1

gracias, trabajando hermosamente ahora! – Dan

0

No puede hacer eso.

AJAX es asincrónico, lo que significa que su función volverá antes de que el servidor envíe una respuesta.
Debe pasar el valor a la persona que llama mediante una devolución de llamada, como lo hace $.load.

+0

@Onkelborg: Necesita devolver el valor haciendo su propia devolución de llamada. – SLaks

+0

El .html() se evalúa cuando se declara la función, y no cuando se llama, ¿verdad? – slezica

+0

@Santiago: Totalmente equivocado. La declaración 'return' regresa del método interno de devolución de llamada; este valor de retorno es ignorado por jQuery. La función externa regresa inmediatamente. – SLaks

1

por lo que sabe que no puede hacer una declaraciónde retorno en la función de devolución de llamada de un .ajax $(), $ .post(), $ .get(), etc .. método. Sin embargo, podría almacenar el valor de 'datos' en una variable declarada fuera de la función, y luego establecer el valor de esa variable cuando se ejecute la función de devolución de llamada. Y hay una variedad de otras opciones.

Cuestiones relacionadas