2015-11-11 15 views
5

Ho un'applicazione Angularjs che utilizza $http.post() per effettuare chiamate al servizio web. Il metodo che chiama ha un tipo di ritorno void e genera un codice di risposta 204 (senza contenuto). Questo entra nella funzione di errore definita nel callback .then() e stampa "nessun elemento trovato" nel registro.Perché una risposta POST di 204 (nessun contenuto) attiva la funzione di errore di Angularjs?

Se restituisco qualcosa dal metodo, restituisce il normale codice di risposta 200.

Perché un codice di successo attiva la funzione di errore?

Codice come richiesto:

function myFn(inputData) { 
    var d = { data: inputData }; 
    $http.post("../api/my/serverFn", d) 
     .then(
      function(response) { 
       $rootScope.AddMsg("Success"); 
      }, 
      function(response) { 
       // The 204 response goes here. 
       $rootScope.AddMsg("Error"); 
      }); 
} 

Lo screenshot richiesto: enter image description here

+0

Invia il tuo codice. –

+0

Codice inviato come richiesto. Presumo che la funzione server sia irrilevante. – Sako73

+0

Hai controllato che il messaggio di errore angolare ti sta dando? ... –

risposta

5

AngularJS non considera in modo nativo una risposta 204 come un errore. L'inchiesta ha rivelato che c'era in effetti un intercettore http nello stack che ha respinto la promessa se la risposta ricevuta avesse uno stato 204, trasformando la risposta corretta in un errore.

+0

Grazie ancora per l'aiuto – Sako73

Problemi correlati