Comment puis-je définir le contentType d'un post jQuery ajax pour qu'ASP.NET MVC puisse le lire?
J'ai quelques jQuery qui ressemble à ceci:
$.ajax({
type: "POST",
url: "/Customer/CancelSubscription/<%= Model.Customer.Id %>",
contentType: "application/json",
success: refreshTransactions,
error: function(xhr, ajaxOptions, thrownError) {
alert("Failed to cancel subscription! Message:" + xhr.statusText);
}
});
Si l'action appelé provoque une exception en fin de compte obtenir ramassé par le Global.asax Application_Error où j'ai un code comme ceci:
var ex = Server.GetLastError();
if (Request.ContentType.Contains("application/json"))
{
Response.StatusCode = 500;
Response.StatusDescription = ex.Message;
Response.TrySkipIisCustomErrors = true;
}
else
{
//some other way of handling errors ...
}
Quand j'execute le script qui fait le post de la Demande.ContentType est toujours une chaîne vide et, par conséquent, ne pas frapper le premier bloc if. Est-il une autre valeur que je doit mettre dans la ajax "contentType"? Ou est-il une autre façon pour moi de le dire asp.net que le type de contenu doit être "application/json"?
Clarification
Le but que je suis en train de réaliser est de transmettre le message de l'exception de retour à l'ajax d'événement d'erreur. Actuellement, même si le SI le bloc est ignoré, l'événement d'erreur correctement jette une boîte d'alerte, mais le message est "introuvable".
Comme vous pouvez le voir je suis en train de mettre l'exeception message pour la Réponse.StatusDescription qui, je crois, le xhr.statusText à l'ajax d'erreur.
source d'informationauteur Sailing Judo
Vous devez vous connecter pour publier un commentaire.
Accordiing à cet article: http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/ "jQuery ne permet pas de définir correctement le contenu spécifié-type quand il n'y a pas de données inclus. "
Pour définir des en-têtes personnalisés dans le XmlHTTPRequest, vous devez utiliser le beforeSend option() fonction dans l'AJAX de jQuery Appel. Utiliser cette fonction pour définir des en-têtes supplémentaires, comme décrit dans la jQuery API documenation.
Exemple:
Si vous êtes toujours le retour json pour Ajax erreurs, alors vous pouvez simplement utiliser ce qui suit pour détecter que c'est un appel Ajax:
L'utilisation de ce type de contenu par défaut.