2011-08-16 15 views
10

Voglio sapere che come possiamo ottenere un codice di stato Ajax in jQuery. ho questo blocco ajax:come ottenere jquery codice di stato ajax

$.ajax{ 
    type: "GET", 
    url: "keyword_mapping.html", 
    data:"ajax=yes&sf="+status_flag, 

    success: callback.success, 
    complete: rollup_filters(), 
    failure: function(){ 
     alert("Failure"); 
    } 
    } 

Ora, nel codice di cui sopra, in caso di guasto, come posso ottenere il codice di stato ajax e alcuni descrizione del codice di stato ??

+1

Date un'occhiata alla [documentazione] (http://api.jquery.com/jQuery.ajax/). –

risposta

11

Si desidera utilizzare l'opzione error per acquisire questo. Per esempio:

error: function (jqXHR, textStatus, errorThrown) 
    // Your handler here... 
} 

è possibile utilizzare l'oggetto jqXHR per recuperare le informazioni sull'errore.

From the documentation:

Per compatibilità con XMLHttpRequest, un oggetto jqXHR esporrà le seguenti proprietà e metodi:

  • readyState
  • stato
  • statusText
  • responseXML e/o responseText quando la richiesta sottostante ha risposto con xml e/o testo, rispettivamente
  • setRequestHeader (nome, valore) che parte dallo standard sostituendo il valore precedente con quello nuovo anziché concatenando il nuovo valore di quello vecchio
  • getAllResponseHeaders()
  • getResponseHeader()
  • abort()
2

Cambia il callback mancato

error:function (xhr, options, error){ 
    alert(xhr.status); 
    alert(error); 
} 
1

Non c'è nulla come failure nelle impostazioni Ajax. Sostituisci errore per errore e ottieni 3 argomenti nella richiamata di errore. Il primo argomento è l'oggetto xhr che ha una proprietà status in esso.

$.ajax{ 
    type: "GET", 
    url: "keyword_mapping.html", 
    data:"ajax=yes&sf="+status_flag, 

    success: callback.success; 
    complete: rollup_filters(), 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert(jqXHR.status); 
    } 
    } 
3

In primo luogo, si verificano alcuni errori di sintassi. Quanto sopra è una chiamata al metodo, quindi deve seguire $.ajax({ ... }); (con parentesi).

In secondo luogo, si desidera fornire la proprietà di errore come parte dell'oggetto, non l'errore (see docs per ulteriori informazioni).

In terzo luogo, quando si esegue il binding a un errore, vengono forniti tre parametri: jqHXR, textState, errorThrow. Questi argomenti ti forniranno i dettagli di una chiamata AJAX fallita. (Più in particolare, prova jqXHR.status)

In alternativa, è possibile associare anche la funzione $.ajaxError.


Aggiornamento Per mantenere questo più up-to-date, si dovrebbe ora essere in seguito il Deferred API (come di jQuery 1.5), che renderebbe vincolante a un qualcosa di errore simile al seguente:

$.ajax({ /* options */ }) 
    .done(function(data, textStatus, jqXHR){ 
    // here you bind to a successful execution. 
    .fail(function(jqXHR, textStatus, errorThrown){ 
    // Here you can catch if something went wrong with the AJAX call. 
    }) 
    .always(function(){ 
    // here you can execute code after both (or either) of 
    // the above callbacks have executed. 
    }); 
+0

Suvati a causa dell'uso di .done() e .fail(). –

Problemi correlati