2010-01-21 12 views
21

In caso di guasto, il codice più o meno così:

error: function(msg) 

Da dove viene il msg viene?

EDIT:

sto usando questa funzione ($ ajax) per chiamare un servizio Web. Quindi, se chi ha votato in basso potrebbe spiegarmi da dove arriva il messaggio, sarebbe fantastico! L'ho impostato nel servizio web? Se é cosi, come? Si prega di non copiare e incollare le definizioni.

+2

perché è questo è stato downvoted? – Jason

+0

il parametro msg è l'oggetto jQuery dell'oggetto XMLHttpRequest utilizzato per effettuare la richiesta. Non importa se si chiama * msg * o * xhr * o qualsiasi altra cosa, questo è ciò che è il primo (o solo) parametro. Nell'esempio in cui l'hai ottenuto, avrebbero dovuto usare * xhr * o qualcosa di diverso da * msg *, che è fonte di confusione. Ti suggerisco di cambiarlo. E sì, non so perché i downvotes. È una bella domanda Qui vado anche a votare. . . –

risposta

2

Il messaggio è un ritorno dalla funzione lato server effettiva che si sta interrogando nella chiamata ajax.

In questo modo è possibile ottenere l'errore o qualsiasi altra informazione sul fatto che il codice lato server abbia fatto ciò che avrebbe dovuto fare.

Dire se si torna una stringa "successo"

msg.val() sarà uguale "successo"

speranza che aiuta

0

la variabile ajax ritorno (in questo caso 'msg') è l'output restituito dalla chiamata AJAX - nel caso di un errore Ajax, questo sarebbe probabilmente un errore del server.

20

Dalla documentazione jquery:

error(XMLHttpRequest, textStatus, errorThrown) Function

Una funzione di essere chiamato, se la richiesta non riesce. La funzione viene passata tre argomenti:
- L'oggetto XMLHttpRequest,
- una stringa che descrive il tipo di errore che si è verificato e
- un oggetto di eccezione facoltativo, se si è verificato.
I valori possibili per il secondo argomento (oltre a null) sono "timeout", "error", "notmodified" e "parsererror". Questo è un evento Ajax.

Quando si indica un solo parametro, sarà lo xmlHttpRequestObject. Puoi ottenere delle buone informazioni da questo. Purtroppo, la maggior parte della documentazione disponibile non è impostata su . Un buon modello predefinito è:

error:function (xhRequest, errorText, thrownError) 

alcune utili informazioni si possono ottenere da xhRequest sono:

  • .status: 404: "non trovato", 500: "Errore del server". Questo a volte può essere di grande aiuto.
  • .responseText sono informazioni dal server, spesso inutili in caso di errore ma a volte possono essere utili.

Il secondo valore, una stringa, a volte è utile. Ah, immagino che i possibili valori siano menzionati nella documentazione.

Il 3 ° parametro, ogni volta che ho controllato, è sempre stato indefinito.Non penso sia mai utile

+0

Il tag hash non funziona (sfortunatamente) –

0

In realtà, il modo corretto è:

error: function(req, status, error) { 
} 

Dal API jQuery:

Una funzione da chiamata se la richiesta fallisce. La funzione ha superato tre argomenti: L'oggetto XMLHttpRequest, una stringa che descrive il tipo di errore che si è verificato e un oggetto opzionale di eccezione , se uno si è verificato. Possibili valori per il secondo argomento (oltre a null) sono "timeout", "errore", "notmodified" e "parsererror". Questo è un evento Ajax.

7

penso che il 3 ° parametro errorThrown nella funzione di errore di callback

error(XMLHttpRequest, textStatus, errorThrown) 

è esattamente per inviare il messaggio di errore di testo dal server.

Quindi, se sul server è possibile impostare manualmente:

Response.Status = 403; 
Response.StatusDescription = "Password is not correct"; 

su un client si ottiene:

textStatus => "error", 
errorThrown => "Password is not correct" 

parte Server per Asp.net MVC sarà:

return new HttpStatusCodeResult(403, "Password is not correct");