Ich habe geplant, eine benutzerdefinierte Warnmeldung entsprechend den Fehlercodes zu erstellen. Also muss ich die Fehlercodes erhalten, während ich die Anfrage an den Server sende und eine Antwort vom Server bekomme.
500 - Irgendwas ist schiefgelaufen. 403- technischer Fehler aufgetreten; 401 - Datei nicht gefunden. 400- unbefugter Zugriff:
In der Anwendung kann ich den Fehlercode in httpinterceptor
Antwort erfassen, aber ich bin nicht in der Lage den Fehlercode in den latenten Versprechen zu erfassen.
var app = angular.module('myApp', []);
app.run();
Controller:
var app = angular.module('myApp', []);
app.run();
app.controller('myController', ['$scope', 'myService', function ($scope, myService) {
var myCtrl = this;
myCtrl.EmployeeList = [];
myService.getData().then(function (data,status) {
myCtrl.EmployeeList = data;
console.log(status);
}), (function (data, status) {
if (status === 500) {
toastr.warn("technical error occurred");
}
else if (status === 400) {
toastr.warn("something went wrong");
}
});
}]);
var app = angular.module('myApp');
app.factory('myService', ['$http', '$q', function ($http, $q) {
var fact = {};
fact.getData = function() {
var deferred = $q.defer();
//$http.get('/Test/getData',
$http.get('http://simpleApiEarl.azurewebsites.net/api/envelopes',
{
cache: true
})
.then(function (response) {
if (typeof response.data === 'object')
{
deferred.resolve(response.data);
}
else
{
debugger;
deferred.reject(response.data);
console.log("Error:" +response.status);
}
}, function (response, status) {
console.log(response.status);
deferred.reject(response.data,status);
});
return deferred.promise;
}
return fact;
}]);
Arbeiten im interceptor
:
var interceptor = function ($q, $rootScope) {
return {
request: function (config) {
console.log(config);
return config;
},
response: function (response) {
var deferred = $q.defer();
return response || $q.when(response);
},
responseError: function (rejection) {
if (rejection.status == 500)
{
alert('Bad Request Processed');
return $q.reject(rejection);
}
if(rejection.status == 403)
{
alert('some thing went wrong');
}
}
}
};
$httpProvider.interceptors.push(interceptor);
Problem: Warum bin ich nicht in der Lage den Fehlercode der latenten Versprechen erfassen die ablehnen Antwort ?
Screenshot:
Vor Service-Aufruf zu senden:
Ich erhalte einen Fehlercode in httpinterceptors, aber ich bekomme keine $ q Ablehnung Fehler Antwort. habe den Screenshot aktualisiert. –
Ok, ich sehe es, jetzt öffne jedes Objekt in 'response', wie' config', 'headers' ... Und du hast einen CORS-Fehler, was bedeutet, dass du deine' Access-Control-Allow-Origin 'nicht gesetzt hast 'Header in Ihrem Backend. Kennst du diesen Fehler oder nicht? – trichetriche
Ich kenne den Fehler, ich stelle diese URL für Anzeige Fehlercode .Meine Frage ist nicht in der Lage, den Fehlercode in $ q Ablehnung zu erfassen, zeigt seinen Status als 0, und für 403. Dieser Fehlercode ist in der Lage, in httpinterceptor zu erfassen , warum ich nicht in der Lage bin, dort festzuhalten. –