2010-10-20 1 views
15

Ho visto molte domande e soluzioni a problemi come questo ma niente ha funzionato per me. Ho questo:Funzione jQuery .load() callback

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

Ma non funziona. Per chiarire, voglio caricare il contenuto in #bdiv e quindi restituire il contenuto di #bdiv. Ma sembra che $("#bdiv").html() venga restituito prima del caricamento del contenuto anche se l'ho inserito in una funzione di callback.

+0

Puoi mostrare il codice completo? Perché è presente in una funzione anonima? –

risposta

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

grazie, lavorando magnificamente ora! – Dan

0

Non puoi farlo.

AJAX è asincrono, il che significa che la funzione verrà restituita prima che il server invii una risposta.
È necessario passare il valore al chiamante utilizzando una richiamata, come fa lo $.load.

+0

@Onkelborg: Deve restituire il valore effettuando la propria richiamata. – SLaks

+0

Il .html() viene valutato quando viene dichiarata la funzione e non quando viene chiamato, giusto? – slezica

+0

@Santiago: assolutamente sbagliato. L'istruzione 'return' sta ritornando dal metodo di callback interno; questo valore di ritorno viene ignorato da jQuery. La funzione esterna ritorna immediatamente. – SLaks

1

per quanto ne so, non si può fare un ritorno dichiarazione nella funzione di callback di un $ .ajax(), $ .post(), $ .get(), ecc .. metodo. Tuttavia, è possibile memorizzare il valore "dati" in una variabile dichiarata all'esterno della funzione e quindi impostare il valore di tale variabile quando viene eseguita la funzione di callback. E c'è una varietà di altre opzioni.