Pourquoi Ajax n’envoie-t-il pas de données?

Le code Ajax suivant ne déclenche même pas mon action si la variable d’entrée (a) n’est pas définie sur Null.

Code Ajax:

var ab = "Chocolate Smoothies ya know?"; $("#customerSubmit").submit(function (e) { e.preventDefault(); $.ajax({ url: "/api/Booking/lander", method: "post", data: { a: ab } }) }); 

Le code suivant de mon contrôleur:

 [HttpPost] public void lander(ssortingng a) { System.Diagnostics.Debug.WriteLine(a); } 

Et quand je ne le mets pas à null, l’entrée reçue est nulle.

capture d’écran lorsque le point d’arrêt est déclenché:

entrez la description de l'image ici

J’ai utilisé type / méthode / etc .. Rien ne semble fonctionner

Mettre à jour:

J’ai même essayé ce qui suit mais ça ne sert à rien:

Mise à jour 2:

Même ce qui suit n’a pas fonctionné et l’un des éléments suivants m’a également indiqué -> “Échec du chargement de la ressource: le serveur a répondu avec un statut de 405 (méthode non autorisée)”

 var ab = 'Chocolate Smoothies ya Know?'; $.ajax({ url:"/api/Booking/lander", data: {'': ab} }); 

Avec

 public ssortingng lander([FromUri]ssortingng asx) ////and asx = "" and /// asx = null 

entrez la description de l'image ici

entrez la description de l'image ici

Mise à jour 3

Quelque chose d’extrêmement étrange s’est passé, j’ai utilisé le code suivant:

entrez la description de l'image ici entrez la description de l'image ici

et j’ai eu l’erreur suivante:

entrez la description de l'image ici

et quand j’ai utilisé

//// (chaîne a = “”)

cela a déclenché mon action pour une raison inconnue et les événements suivants se sont produits.

entrez la description de l'image ici

Voici mon code WebApiConfig:

 using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace HotelManagementSystem { public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAtsortingbuteRoutes(); //routes.MapHttpRoute("RestApiRoute", "Api/{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" }); //this replaces your current api route config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } } } 

Mise à jour 4:

Même la configuration suivante n’a pas fonctionné:

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

Vous devez définir contentType et ssortingngify les données à envoyer au contrôleur. Les données que vous enverrez seront donc:

 var postData = JSON.ssortingngify({'a':ab}); 

Donc, le code résultant devrait ressembler à ceci:

 var ab = 'Chocolate Smoothies ya Know?'; var postData = JSON.ssortingngify({'a':ab}); $.ajax({ url: "/api/Booking/lander", method: "POST", contentType: "application/json", data: postData }); 

Vous pouvez éventuellement définir dataType: "json" aussi. Vous n’avez pas besoin de spécifier d’emplacement de recherche (uri, body) pour a paramètre dans la méthode d’ lander .

vous avez un itinéraire par défaut défini dans votre fichier RouteConfig.cs

 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new [] { "YourNameSpace.Controllers" } ); 

si vous changez “a” dans votre signature en “id” et envoyez “id” par votre ajax, vous y arriverez, mais si vous voulez avoir plusieurs parameters dans votre méthode de publication ou une dénomination différente, essayez de définir de nouveaux itinéraires.