Type de contenu
Vous n'avez pas besoin de spécifier ce type de contenu pour les appels aux actions des contrôleurs MVC. Le type de contenu spécial "application/json ; charset=utf-8" n'est nécessaire que lors de l'appel des méthodes ASP.NET AJAX "ScriptServices" et page. Le type de contenu par défaut de jQuery, "application/x-www-form-urlencoded", est approprié pour demander une action de contrôleur MVC.
Pour en savoir plus sur ce type de contenu, cliquez ici : Détournement de JSON et comment ASP.NET AJAX 1.0 évite ces attaques
Données
Les données es correct comme vous l'avez fait. En passant à jQuery un objet JSON, comme vous l'avez fait, il sera sérialisé en tant que patientID=1 dans les données POST. Cette forme standard est la façon dont MVC attend les paramètres.
Il suffit de mettre les paramètres entre guillemets, comme "{ 'patientID' : 1 }", lorsque vous utilisez les services ASP.NET AJAX. Ils s'attendent à ce qu'une seule chaîne représentant un objet JSON soit analysée, plutôt que les variables individuelles dans les données POST.
JSON
Ce n'est pas un problème dans ce cas précis, mais c'est une bonne idée de prendre l'habitude de citer toute clé ou valeur de type chaîne dans votre objet JSON. Si vous utilisez par inadvertance un mot clé réservé JavaScript comme clé ou valeur dans l'objet, sans le citer, vous rencontrerez un problème de confusion et de débogage.
Inversement, il n'est pas nécessaire de citer les valeurs numériques ou booléennes. Il est toujours prudent de les utiliser directement dans l'objet.
Donc, en supposant que vous souhaitiez effectivement utiliser le POST au lieu du GET, votre appel $.ajax() pourrait ressembler à ceci :
$.ajax({
type: 'POST',
url: '/Services/GetPatient',
data: { 'patientID' : 1 },
dataType: 'json',
success: function(jsonData) {
alert(jsonData);
},
error: function() {
alert('Error loading PatientID=' + id);
}
});