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é:
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
Mise à jour 3
Quelque chose d’extrêmement étrange s’est passé, j’ai utilisé le code suivant:
et j’ai eu l’erreur suivante:
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.
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é:
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.