2012-10-30 4 views
23

Ho il seguente:Quali argomenti vengono forniti alla funzione all'interno di ajax .done?

$.ajax(link.href, 
    { 
     cache: false, 
     dataType: 'html' 
    }) 
     .done(onDialogDone) 
     .fail(onDialogFail); 

Questo funziona bene e onDialogDone si chiama. Comunque quali argomenti dovrei aspettarmi di vedere forniti a onDialogDone e cosa dovrei aspettarmi di vedere su onDialogFail.

Il motivo che chiedo è perché io uso dattiloscritto e voglio fornire gli argomenti corretti quando mi definisco il mio onDialogDone e onDialogFail.

risposta

33

Gli argomenti per .done() e .fail() sono gli stessi argomenti dei corrispondenti success: e error: parametri della funzione $.ajax(), vale a dire:

.done(function(data, textStatus, jqXHR) { ... }); 

e

.fail(function(jqXHR, textStatus, errorThrown) { ... }); 

Ai fini del dattiloscritto , textStatus e errorThrown sono stringhe, jqXHR è un Object e data dipende da ciò che il server remoto ti invia.

+0

noti inoltre che 'questo' sarà oggetto jQuery.ajax utilizzato (* non * la * * risultante oggetto jqXHR) indipendentemente dal metodo ajax chiamato (per esempio $ .ajax o un metodo abbreviato come $ GetJSON). – Synexis

2

check out this:

Metodi (parte di jqXHR e le implementazioni differite, mostrate qui solo per chiarezza)

.ajax().always(function(a, textStatus, b){}); 

Sostituisce il metodo .Il(), che è stata sconsigliata a jQuery 1.8. In risposta alla operazione di successo, gli argomenti sono stessi .done() (es. A = dati, b = jqXHR) e per le transazioni fallite gli argomenti sono gli stessi di .fail() (es. A = jqXHR, b = errorThrown) . Questo è un costrutto alternativo per la funzione di callback completa sopra. Fare riferimento a deferred.always() per i dettagli di implementazione.

.ajax().done(function(data, textStatus, jqXHR){}); 

Sostituisce metodo .success() che è stata sconsigliata a jQuery 1.8. Questo è un costrutto alternativo per la funzione di callback di successo sopra. Fare riferimento a deferred.done() per i dettagli di implementazione.

.ajax().fail(function(jqXHR, textStatus, errorThrown){}); 

Sostituisce metodo .error() che è stata sconsigliata a jQuery 1.8. Questo è un costrutto alternativo per la funzione di callback completa sopra. Fare riferimento a deferred.fail() per i dettagli di implementazione.

.ajax().then(function(data, textStatus, jqXHR){}, function(jqXHR, textStatus, errorThrown){}); 

Incorpora la funzionalità dei metodi .done() e .fail(). Fare riferimento a deferred.then() per i dettagli di implementazione.

.ajax().pipe(function(data, textStatus, jqXHR){}, function(jqXHR, textStatus, errorThrown){}); 

include le funzionalità di .done() e .fail() metodi, permettendo la promessa sottostante da manipolare. Consultare deferred.pipe() per i dettagli di implementazione.

+0

una copia e incolla da un'altra pagina Web non è IMHO molto istruttiva. – Alnitak

+1

il collegamento è specificato sopra. Puoi spiegare perché questo non è utile? – thedev

+0

perché hai fornito masse di _additional_ contesto che è mescolato con le informazioni richieste, senza alcuna spiegazione del perché, che confonderà il lettore. – Alnitak

4

I tre parametri passati al gestore done sono:

data, textStatus, jqXHR 

Si può leggere di più qui: http://api.jquery.com/jQuery.ajax/

  1. data è il messaggio di risposta
  2. textStatus sarà sempre successo nel done function
  3. jqXHR è il XMLHttpRequest grezzo