AJAX Passer plusieurs paramètre à WebApi
Requête AJAX:
$.ajax({
url: url,
dataType: 'json',
type: 'Post',
data: {token:"4", feed:{"id":0,"message":"Hello World","userId":4} }
});
Web Côté serveur de l'API:
[HttpPost]
public HttpResponseMessage Post(string token, Feed feed)
{
/* Some code */
return new HttpResponseMessage(HttpStatusCode.Created);
}
Code d'erreur 404: {"message":"Pas de HTTP ressource a été trouvée, qui correspond à
l'URI de la demande "localhost:8080/api/feed'.","messageDetail":"Aucune action n'
a été trouvé sur le contrôleur de "Nourrir" qui correspond à la demande."}
Pourquoi j'obtiens cette erreur et Pourquoi je ne suis pas en mesure de POSTE multiples paramètres de mon API?
u peut poster l'url??
Les noms de paramètres doivent correspondre au serveur de routage/mappings. Le premier paramètre est généralement
Est-ce le bon code? Il dit que vous êtes d'appel
localhost:8080/api/feed
l'alimentation est le nom du contrôleur, pas la méthode dans un WEBAPI appeler comme ça.
Les noms de paramètres doivent correspondre au serveur de routage/mappings. Le premier paramètre est généralement
id
(pas de jeton) sauf si vous avez changé le routage/mappage par défaut.Est-ce le bon code? Il dit que vous êtes d'appel
feed
, mais le nom de la méthode est post
?localhost:8080/api/feed
l'alimentation est le nom du contrôleur, pas la méthode dans un WEBAPI appeler comme ça.
OriginalL'auteur Mohsin JK | 2013-09-22
Vous devez vous connecter pour publier un commentaire.
Commencer par la rédaction d'un modèle de vue:
que votre contrôleur de l'action prendra en paramètre:
et enfin adapter votre jQuery appel à l'envoyer sous forme de JSON:
Choses importantes à noter pour l'appel AJAX:
contentType
àapplication/json
JSON.stringify
fonction de l'efficacité de la conversion de l'objet javascript à une chaîne JSONdataType: 'json'
paramètre. jQuery utilise automatiquement leContent-Type
en-tête de réponse envoyé par le serveur pour en déduire comment analyser le résultat transmis à lasuccess
de rappel.Tu veux dire que je ne peut pas utiliser de multiples paramètres en POST API?
Vous pouvez, mais le modèle de classeur feront de votre vie beaucoup plus difficile. C'est un enfer d'un désordre. Lire ici: blogs.msdn.com/b/jmstall/archive/2012/04/16/... une Fois que vous avez lu cet article, vous aurez absolument oublier passage de plusieurs paramètres et de simplement faire de la bonne façon, comme indiqué dans ma réponse en utilisant les modèles de vue. De cette façon, vous n'avez pas à vous soucier de quel paramètre est lié à partir de laquelle le corps ou la tête ou quoi que ce soit. Vous n'avez qu'un seul paramètre qui est votre modèle de vue et le client directement l'envoie en tant que chaîne JSON à la demande de la charge utile.
Je suis d'accord avec @DarinDimitrov (difficile d'être en désaccord avec quelqu'un avec 464k points 🙂 ) l'approche à utiliser un viewmodel, cela rend les choses beaucoup plus propre
OriginalL'auteur Darin Dimitrov
Essayer de ce côté serveur (à partir de la mémoire, vous ne pouvez avoir qu'un seul FromBody paramètre doit contenir toutes les propriétés):
JK: Mon mauvais... je pense que vous ne pouvez avoir qu'un seul [FromBody] paramètre, donc il doit contenir à la fois vos objets.
OriginalL'auteur Gone Coding
J'ai eu un problème similaire récemment et voici quelques infos sur comment je l'ai résolu. Je pense que le problème est à faire avec la façon dont WebApi poignées de paramètres. Vous pouvez lire un peu plus sur elle ici et ici mais il y a essentiellement deux façons de publier des paramètres, dans le corps ou dans l'uri. Le corps ne peut contenir qu'un seul paramètre, mais il peut être un paramètre complexe, alors que l'uri peut contenir n'importe quel nombre de paramètres (jusqu'à l'uri de la limite de caractères), mais elles doivent être simples. Lorsque jquery fait un POST appel ajax il essaie de passer tous les paramètres de données dans le corps, qui ne fonctionne pas dans votre cas, puisque le corps peut avoir qu'un seul paramètre.
En termes de code, je pense que vous besoin de quelque chose comme ceci:
Espère que ça aide.
OriginalL'auteur Quails4Eva
Vous pouvez poster votre
Feed
classe, juste pour s'assurer que le properies match./
manquait.Voici mon Flux de Classe, de la classe publique Nourrir { public int Id { get; set; } public string Message { get; set; } public int id utilisateur { get; set; } }
J'ai essayé ton code mais j'ai toujours la même erreur.
Les propriétés ne correspondent pas, ils sont sensibles à la casse. Je vais mettre à jour.
OriginalL'auteur christiandev
Essayer avec celui-ci. Vous devez obtenir l'objet json données à partir du corps. Demande de lecture de l'entrée streem et de l'associer à votre modèle de données.
espère que cela aidera.
OriginalL'auteur sandSK