2012-01-23 18 views
5

Fondamentalmente si riduce a, c'è qualche caso in cui sarebbe cattivo per me chiamare la funzione di callback di successo su codici di stato sotto 400?Successo con il codice di stato AJAX <400?

Nell'osservare lo list of status codes for HTTP, non penso ci sarebbe ma voglio esserne sicuro. Non penso che otterrò i codici di livello 1XX poiché sembrano che la maggior parte di essi ritorni prima che venga elaborata la richiesta completa e readyState === 4 (non mi interessa di IE 7's 122). E voglio ancora restituire il successo su un 302 e 304 codici di stato. Quindi è status < 400 un modo accettabile per catturare tutto questo?

+1

L'utilizzo di codici di stato HTTP per segnalare il successo/l'errore delle prestazioni dello script di gestione non è generalmente una buona idea. I codici di stato HTTP dovrebbero essere limitati a segnalare errori a livello di http, non "zomg, la tua richiesta di ricerca non ha trovato alcun risultato". –

+0

@MarcB Questo codice sarà per il successo e il fallimento del caricamento dei componenti essenziali. Questo sarà per un gioco HTML 5 e userò uno script iniziale per caricare tutto il contenuto mentre visualizzo una schermata di caricamento. È qui che il successo/fallimento diventa importante. Se qualcosa non si carica, devo gestirlo e visualizzare un messaggio pertinente. – Ktash

+1

Quindi la risposta restituisce un oggetto json, qualcosa sulla falsariga di "{" error ": true," code ": 401}' e controlla quello. segnalando un http 401 indica qualcosa accaduto a livello http, il che non è vero, tutto sulla richiesta http ha funzionato perfettamente. –

risposta

1

Sulla @sarnold's concerns, sembra che il XMLHttpRequest specifications dire il seguente:

Se la risposta è un reindirizzamento HTTP (codice di stato 301, 302, 303 o 307), allora deve essere trasparente seguita (a meno che non violi le precauzioni di sicurezza o ciclo infinito ). Qualsiasi altro errore (incluso un 401) DEVE causare all'oggetto di utilizzare quella pagina di errore come risposta.

Che sembra indicarmi che le risposte 2XX o 3XX sono valide. Quindi, in breve, i miei risultati indicano che status < 400 è un controllo di risposta di stato appropriato.

1

A 301 significa che il client è responsabile di effettuare nuovamente la chiamata HTTP con il nuovo URL. La tua biblioteca o il tuo kit di strumenti lo gestiscono già per te?

+0

Non sto usando una libreria. Questo è tutto il codice personalizzato in Javascript diretto. Questa potrebbe essere la mia risposta anche se l'oggetto 'XMLHttpRequest' non lo gestisce automaticamente. – Ktash

+1

Dalla scheda tecnica ['XMLHttpRequest'] (http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/):" Se la risposta è un reindirizzamento HTTP (codice di stato 301, 302, 303 o 307), quindi DEVE essere seguito in modo trasparente (a meno che non violi le precauzioni di sicurezza o loop infinito). Qualsiasi altro errore (incluso un 401) DEVE far sì che l'oggetto usi quella pagina di errore come risposta. " Sembra che potrei essere al sicuro con 301s. – Ktash

+0

Eccellente. Potresti volerlo aggiungere come risposta: è molto più autorevole della mia lettura delle specifiche HTTP. :) – sarnold

Problemi correlati