3 votes

Comment JSON détermine-t-il un succès à partir d'une erreur ?

Je suis novice en matière de JSON et je l'ai utilisé avec MVC3 ASP.NET mais quelqu'un pourrait-il m'éclairer sur la manière de renvoyer une erreur pour un résultat JSON ?

J'ai l'appel suivant de ma vue :

  $.ajax({
     type: "POST",
     dataType: "json",
     url: "EditJSON",
     data: { FilmID: InputFilmID, Title: InputTitle, Description: InputDescription},
     success: function (result) {
        alert(result.Message + " updating film " + result.Title);
        window.location = "../All";
     },
     error: function (error) {
        alert('error');
     }
  });

Le contrôleur traite la demande comme un succès. Que dois-je passer pour une erreur JSON afin que la fonction error : soit traitée par la vue ?

    [AcceptVerbs("POST")]
    public JsonResult EditJSON(BobsMoviesMVC2.Models.Film film)
    {
       filmRepository.Update(film);
       return Json(new {Message = "Success", Title = film.Title });

       // What would I return for an error here?
    }    

Gracias.

11voto

Luke Sneeringer Points 4032

JQuery utilise le code de réponse HTTP pour déterminer le succès ou l'échec.

Les codes de réponse HTTP >= 400 sont considérés comme des erreurs. Les codes de réponse HTTP >= 200 et < 400 sont considérés comme des succès.

Renvoyez les codes HTTP appropriés à partir de votre code côté serveur pour obtenir le comportement que vous recherchez.

6voto

Daniel Gill Points 810

Confirmé, en .NET vous pouvez mettre :

Response.StatusCode = (int)HttpStatusCode.InternalServerError ,

ou tout autre code d'état d'erreur que vous souhaitez, juste avant votre déclaration de retour JSON. (Merci Mariah).

Vérifiez l'option "erreur" de l'option appel jquery ajax pour voir ce que vous pouvez faire avec l'erreur résultante du côté client.

0voto

minitech Points 87225

Un en-tête avec un code d'état autre que 2xx ou 3xx, probablement un code d'erreur 5xx ou 4xx.

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