Comment gérer les exceptions lancées dans un contrôleur lorsque jquery ajax appelle une action?
Par exemple, je voudrais un code javascript global qui est exécuté sur n'importe quel type d'exception de serveur lors d'un appel ajax qui affiche le message d'exception en mode débogage ou juste un message d'erreur normal.
Du côté client, j'appellerai une fonction sur l'erreur ajax.
Du côté du serveur, dois-je écrire un filtre d'action personnalisé?
asp.net-mvc
jquery
asp.net-mvc-3
Shawn Mclean
la source
la source
Réponses:
Si le serveur envoie un code d'état différent de 200, le rappel d'erreur est exécuté:
et pour enregistrer un gestionnaire d'erreur global, vous pouvez utiliser la
$.ajaxSetup()
méthode:Une autre façon consiste à utiliser JSON. Vous pouvez donc écrire un filtre d'action personnalisé sur le serveur qui intercepte les exceptions et les transforme en réponse JSON:
puis décorez l'action de votre contrôleur avec cet attribut:
et enfin l'invoquer:
la source
error
rappel sera exécuté.Après googler, j'écris un simple traitement d'exception basé sur MVC Action Filter:
et écrivez dans global.ascx:
puis écrivez ce script sur la mise en page ou la page maître:
Enfin, vous devez activer l'erreur personnalisée. et profitez-en :)
la source
Malheureusement, aucune des réponses n'est bonne pour moi. Étonnamment, la solution est beaucoup plus simple. Retour du contrôleur:
Et gérez-le comme une erreur HTTP standard sur le client comme vous le souhaitez.
la source
int
. De plus, lorsque je fais cela, le résultat est transmis auajax
success
gestionnaire, et non auerror
gestionnaire. Est-ce le comportement attendu?J'ai fait une solution rapide parce que je manquais de temps et cela a bien fonctionné. Bien que je pense que la meilleure option est d'utiliser un filtre d'exception, ma solution peut peut-être vous aider dans le cas où une solution simple est nécessaire.
J'ai fait ce qui suit. Dans la méthode du contrôleur, j'ai renvoyé un JsonResult avec une propriété "Success" dans les données:
Plus tard dans l'appel ajax, je viens de demander cette propriété pour savoir si j'avais une exception:
J'espère que cela t'aides. Bon code! : P
la source
En accord avec la réponse d'aleho, voici un exemple complet. Cela fonctionne comme un charme et est super simple.
Code contrôleur
Code Javascript dans la vue
J'espère que ceci aide quelqu'un d'autre!
la source
Pour gérer les erreurs des appels ajax côté client, vous attribuez une fonction à l'
error
option de l'appel ajax.Pour définir globalement une valeur par défaut, vous pouvez utiliser la fonction décrite ici: http://api.jquery.com/jQuery.ajaxSetup .
la source