Ajax de Jquery, de retour de succès ou d'erreur de mvc.net contrôleur
Je voudrais contrôler le moment de répondre à un message d'erreur et quand un message de succès, mais je suis toujours le message d'erreur:
voici ce que je suis en train de faire:
$.ajax({
type: "POST",
data: formData,
url: "/Forms/GetJobData",
dataType: 'json',
contentType: false,
processData: false,
success: function (response) {
alert("success!")
},
error: function (response) {
alert("error") //I'm always get this.
}
});
Contrôleur:
[HttpPost]
public ActionResult GetJobData(Jobs jobData)
{
var mimeType = jobData.File.ContentType;
var isFileSupported = AllowedMimeTypes(mimeType);
if (!isFileSupported){
// Error
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Content("The attached file is not supported", MediaTypeNames.Text.Plain);
}
else
{
// Success
Response.StatusCode = (int)HttpStatusCode.OK;
return Content("Message sent!", MediaTypeNames.Text.Plain);
}
}
- Ajouter un
if
condition... je ne suis pas sûr de ce que la réponse vous attend ici. - Votre frapper erreur, parce que le code après la première instruction de retour n'est pas en cours d'exécution. Vous pouvez déplacer le code après le commentaire pour le succès, avant que la précédente instruction de retour.
- J'ai résolu la question. maintenant, ma question est claire.
- Ça fait des années que cela a été demandé, mais la raison pour laquelle vous avez probablement une erreur est le
datatype
paramètre dans votre requête Ajax. Vous dites à l'Ajax s'attendre à une JSON, mais vous êtes de retour en texte brut:Ajax: "datatype": The type of data that you're expecting back from the server
Vous devez vous connecter pour publier un commentaire.
Contrôleur:
---Supplément de:---
fondamentalement, vous pouvez envoyer plusieurs paramètres de cette manière:
Contrôleur:
Html:
contentType: 'application/json; charset=utf-8'
oufalse
? Et pourquoi?"error": A function to be called if the request fails.
Dans le cas des OP exemple, la demande de frapper le serveur & a été traité, il produit un état prévisible qui ne pouvaient pas être résolus à ce moment; plutôt que de faire une erreur inattendue (I. e. Bad HTTP Verbe, 404, etc). Donc, par la gestion de cette dans lesuccess
fonction, vous pouvez distinguer un comportement normal de inattendue des erreurs de serveur. I. e. Demande au serveur succès, revint avec de "mauvais fichier de l'état" message.Utilisation
Json
classe au lieu deContent
comme le montre la suivante:Également définir contentType:
contentType: 'application/json; charset=utf-8'
oufalse
? Et pourquoi?Response.StatusCode
ensemble.Lorsque vous valeur de retour à partir du serveur de jQuery Ajax appel vous pouvez également utiliser le code ci-dessous pour indiquer une erreur de serveur:
Ou
Ou
Des Codes autres que Http codes de Réussite (par exemple, 200[OK]) va déclencher la fonction devant
error:
à côté client (ajax).vous pouvez avoir appel ajax comme:
En outre, vous pouvez gérer les différentes erreurs HTTP jQuery côté comme:
statusCode:
est utile lorsque vous souhaitez appeler des fonctions différentes pour les différents codes de statut que de vous renvoyer à partir du serveur.Vous pouvez voir la liste des différents codes d'État Http ici:Wikipédia
Ressources supplémentaires: