AngularJS service n'est pas en invoquant l'erreur de rappel sur la méthode save()
Donc je suis en utilisant angularjs service restful $ressource et je demande $de la fonction de sauvegarde. Cependant, l'erreur de rappel je passe à il n'est pas appelée. Le serveur envoie un 418 erreur, je pensais que puisque ce n'est PAS 200 entraînerait l'erreur de callback appelée. Mais, il ne le fait jamais. Je ne trouve pas de documentation indiquant quels codes d'erreur http entraînera l'erreur de callback qui est appelée.
Voici mon code:
var modalScope = $scope.$new();
modalScope.showPassword = false;
modalScope.message = null;
modalScope.user = new User();
modalScope.submit = function(user) {
user.$save( {}, function(data,headers) {
//do the success case
}, function(data,headers) {
//do the error case
});
};
La modalScope.l'utilisateur est passé à la fonction envoyer défini. Alors, quel est le problème, pourquoi cette erreur de rappel n'est pas appelée?
Donc,
Oui le succès de rappel est toujours appelée.
Je pense que j'ai trouvé le problème, votre serveur web est une théière.
J'ai dû rire... Thx
Si vous utilisez intercepteurs assurez-vous de retourner rejeté réponse dans l'erreur des gauchers
success
rappel est toujours appelé?Oui le succès de rappel est toujours appelée.
Je pense que j'ai trouvé le problème, votre serveur web est une théière.
J'ai dû rire... Thx
Si vous utilisez intercepteurs assurez-vous de retourner rejeté réponse dans l'erreur des gauchers
return $q.reject(rejection);
docs.angularjs.org/api/ng/service/$http#intercepteurs
OriginalL'auteur chubbsondubs | 2012-10-26
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé ce qui suit dans le ngResource code source
Je suis un peu confus au sujet de la notation de plage, mais il semble qu'il devrait en fait s'appeler la méthode d'erreur. Peut-être que vous avez trouvé un bug.
Merde, j'ai relu votre commentaire. C'est dans le code source. Yay pour la documentation. En tout cas merci pour la recherche!
Je n'ai pas trouvé dans la doc, mais dans l'angle de code source. Recherche pour "400)" ici pour trouver le passage en question: ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js
FWIW, le "<200, 400) de la gamme" commentaire est dans les docs, mais c'est sur le $http de la page, à la section "utilisation Générale": docs.angularjs.org/api/ng.$http $ressource page indique que le $service de ressources utilise le niveau inférieur $service http dessous, de sorte que vous ne avez qu'à suivre cette documentation piste pour le trouver.
Bon à savoir! Alors je n'ai pas besoin de rechercher le code source de nouveau. Merci! 🙂
OriginalL'auteur F Lekschas
Eu le même problème et rien ne travaillaient ici. S'est avéré que j'avais un personnalisé debug-intercepteur qui n'a pas explicitement return $q.rejeter(réponse).
Apparemment chaque coutume de débogage-intercepteur remplace le comportement par défaut.
Voir https://github.com/angular/angular.js/issues/2609#issuecomment-44452795 où j'ai trouvé la réponse.
A couru dans le même problème. Merci pour cette!
Ce qui m'a sauvé beaucoup de temps. Le problème est dans l'un de nos chasseurs. Merci
OriginalL'auteur Ruud van der Linden
J'ai eu des problèmes avec l'erreur de rappel, mais il semble que dans les versions plus récentes de AngularJS, l'erreur de la méthode de rappel doit maintenant être mis en place quelque chose comme ceci:
Source + description plus détaillée: https://groups.google.com/d/msg/angular/3Q-Ip95GViI/at8cF5LsMHwJ
Aussi, en réponse aux commentaires sur Flek du post, il semble que, actuellement, seulement les réponses entre 200 et 300 ne sont pas considéré comme une erreur.
OriginalL'auteur sgdesmet
Je n'arrivais pas à Modifier la réponse de travailler, mais cela a fonctionné pour moi:
OriginalL'auteur mstreffo
Je suis la copie à partir de la ngResource documentation:
$save
est considéré comme une non-GET "classe" de l'action, de sorte que vous devez utiliser un supplément depostData
paramètre. En utilisant la même question exemple, cela devrait fonctionner:Garder un œil sur l'erreur de rappel, par rapport, par exemple, est de l'appeler avec un seul argument, qui apporte toutes les réponses http.
OriginalL'auteur Alter Lagos
En fait, si nous suivons la documentation. il fonctionne
ci-dessus est la capture de mon code, il fonctionne.
OriginalL'auteur Rajender Saini