2013-06-13 6 views

Antwort

128

Sie benötigen einen zusätzlichen Parameter hinzuzufügen:

$http.get(url).then(
    function(response) { 
     console.log('get',response) 
    }, 
    function(data) { 
     // Handle error here 
    }) 
+9

Hinweis Versuchen Sie, die 'Antwort' Objekt oben hat: Daten, Status, Header, Config, status. Das obige Objekt 'data' hat: data, status, config, statusText. (Es gibt spezielle Regeln darüber, ob statusText übergeben wird - Browser, mobile oder nicht, Webserver usw.) – OzBob

+0

Beachten Sie auch: 'data.config.url' enthält die vollständigen ** url + params ** , falls Sie Params bestanden haben neben der URL –

13

http://docs.angularjs.org/api/ng.$http

$http.get(url).success(successCallback).error(errorCallback); 

ersetzen successCallback und errorCallback mit Ihren Funktionen.

Edit: Laurent Antwort ist richtig bedenkt, dass er sich then verwenden. Aber ich lasse das hier als eine Alternative für die Leute, die diese Frage besuchen werden.

+9

Es ist erwähnenswert, dass dies nicht dasselbe tut wie Laurent Antwort. '.then()' gibt ein Versprechen zurück. '.success()' und '.error()' nicht. –

+4

@ james-Brauer: genauer zu sein, '.then()' gibt a ** neu ** Versprechen. '.success()' und '.error()' nicht, sie geben beide das ursprüngliche Versprechen von 'get (url)' zurück. – dod

+8

Es ist auch wichtig zu bedenken, dass "Erfolg" und "Fehler" -Rückrufe für $ http api veraltet sind. –

3

Wenn Sie Serverfehler global zu handhaben wollen, möchten Sie vielleicht einen Abfangjäger-Service für $ httpProvider registrieren:

$httpProvider.interceptors.push(function ($q) { 
    return { 
     'responseError': function (rejection) { 
      // do something on error 
      if (canRecover(rejection)) { 
       return responseOrNewPromise 
      } 
      return $q.reject(rejection); 
     } 
    }; 
}); 

Docs: http://docs.angularjs.org/api/ng.$http

+0

Ich denke du hast da einen Fehler gemacht. Um Antwortfehler zu behandeln, müssen Sie einen Antwort-Interceptor erstellen, nicht einen Request Interceptor, wie Sie es getan haben. – djd

+0

Der Interceptor für Winkel ist sowohl Anfrage als auch Antwort ab 1.1.x. – mlaccetti

39

Sie können dieses Bit machen mehr sauberer durch die Verwendung :

$http.get(url) 
    .then(function (response) { 
     console.log('get',response) 
    }) 
    .catch(function (data) { 
     // Handle error here 
    }); 

Ähnlich wie @ this.lau_ Antwort, anderer Ansatz.

+1

Ich würde total für diese Lösung gehen. – charliebrownie

+3

muss Antwort akzeptiert werden, weil '.error()' Methode mit 500 Fehler funktioniert nicht! Bitte akzeptiere. – saike

+2

Beste Lösung nach 'success' &' remove' in v1.6.0 entfernt –

2

diese auch

function sendRequest(method, url, payload, done){ 

     var datatype = (method === "JSONP")? "jsonp" : "json"; 
     $http({ 
       method: method, 
       url: url, 
       dataType: datatype, 
       data: payload || {}, 
       cache: true, 
       timeout: 1000 * 60 * 10 
     }).then(
      function(res){ 
       done(null, res.data); // server response 
      }, 
      function(res){ 
       responseHandler(res, done); 
      } 
     ); 

    } 
    function responseHandler(res, done){ 
     switch(res.status){ 
      default: done(res.status + ": " + res.statusText); 
     } 
    } 
Verwandte Themen