2013-10-16 8 views
8

Ho un problema. Sto cercando di effettuare una chiamata $ http con la funzione .then .sucssess e .error. Ma anche se ho modificare l'URL della richiesta di un non esistente, è sempre in esecuzione il gestore successo:

$http.get('data/myjson.json').then(onSuccess, onError); 

onSuccess(data){}; 
onError(data){}; 

Inoltre, il parametro di dati ha uno stato di 404, che indica il fallimento, ma l'onError ha mai eseguire.

un corpo può spiegare come funziona davvero?

grazie!

+0

Quale versione di angolare stai usando? –

+0

Sto usando angular 1.0.7. – user2887964

risposta

12

Questo codice funziona per me:

$http.get('data/myjson.json').then(onSuccess, onError); 

function onSuccess(data) { 
} 
function onError(data) { 
} 
+0

Ciao Manuel, grazie per la tua risposta. La funzione onError è stata eseguita quando si utilizza un URL errato per la richiesta? In caso di successo, il mio codice funziona, il problema è la gestione degli errori – user2887964

+0

Cosa intendi con la gestione degli errori? Su quale risposta riesci a gestire gli errori? –

+0

Voglio dire, quando provo a inserire un URL errato (ad esempio dataaaa/myjson.com), voglio che l'onError sia eseguito, ma gli onSucces sono invece eseguiti – user2887964

2
$http.get(url).then(onSuccess, onerror); 
    function onSuccess(response) { 
    //Success message here... 
            } 
    function onerror(data) { 

       if(data.status==404) { 
        alert('Invalid URl') 
          return; 
       } 

    } 

basta provare questo ...

1

Entrambi modo può essere utilizzato per la gestione degli errori ng promessa: -

Primo:

$http.get('data/myjson.json') 
.success(successHandler) 
.error(errorHandler) 

function successHandler(data) { 
} 
function errorHandler(data) { 
} 

Secondo:

$http.get('data/myjson.json').then(successHandler, errorHandler); 

function successHandler(data) { 
} 
function errorHandler(data) { 
}