31 votes

Comment déclencher le "erreur" de rappel dans un appel à l'aide de jQuery AJAX ASP.NET MVC?

Est-ce lié à ma question sur la façon de gérer les erreurs de jQuery, les appels AJAX. Plusieurs réponses ont suggéré que j'utilise le "erreur" de rappel pour afficher toutes les erreurs d'un appel AJAX jQuery. Je me demandais comment le faire à l'aide d'ASP.NET MVC. Est-il un moyen pour mon contrôleur de l'action de retour une erreur qui serait accessible à partir de l ' "erreur" de rappel? Du côté client, le code devrait ressembler à quelque chose comme ceci:

$.ajax({
   type: "POST",
   url: "MyUrl",
   data: "val1=test",
   success: function(result){
        // Do stuff
   },
   error: function(request,status,errorThrown) {

   }
 });

21voto

Adam Lassek Points 18918

Faire quelque chose comme ceci:

Response.StatusCode = (int)HttpStatusCode.BadRequest;
actionResult = this.Content("Error message here");

Le code de statut devrait changer en fonction de la nature de l'erreur; en général, 4xx généré par les utilisateurs des problèmes et 5xx pour le côté serveur de problèmes.

8voto

Todd Smith Points 8297

Si vous êtes en utilisant

[HandleError]

puis, jetant un HttpException va se faire prendre et acheminé vers votre page d'erreur personnalisée.

Une autre option est d'utiliser

Response.StatusCode = 500;
Response.Write("Error Message");
Response.End();

Il y a probablement un moyen plus pratique d'écrire cela, mais je n'ai pas tombé sur elle encore.

7voto

Derek Morrison Points 2359

Si vous êtes en utilisant MVC 3, alors vous pouvez retourner un ActionResult dans votre contrôleur qui a le code d'état HTTP et le statut de message:

return new HttpStatusCodeResult(500, "Error message");

Ensuite, dans votre erreur de rappel:

error: function (request, textStatus, errorThrown) {
    alert(request.statusText);
}

1voto

Runscope API Tools Points 43859

Je pense que cet événement est déclenché pour toute réponse qu'a un code de réponse autre que de 200. Je ne peux pas trouver la preuve dans les docs si.

Pour ce faire, à partir du code (travaux en Webforms):

throw new HttpException(500, "Error message");

1voto

Salty Points 4407

Selon cette page, vous avez juste besoin d'appliquer l'en-tête HTTP/1.0 500 Internal Server Error sur votre ASP.net page. L' $.ajax demande de rattraper cette erreur et exécuter l' error fonction de rappel. =]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X