Comment envoyer des données POST avec AJAX? Et comment obtenir les données de POSTES dans l'API Web?
Sur mon projet MVC-je envoyer un tableau HTML comme un e-mail au client.
J'ai une Fonction e-Mail sur une Web API que je devrais l'appeler:
public class FunctionsController : ApiController
{
[HttpPost]
[Route("{controller}/email")]
public void SendEmail(string to, string from, string body, string subject, string bcc)
{
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "xxxx";
MailMessage mailMessage = new MailMessage();
mailMessage.IsBodyHtml = true;
mailMessage.Body = body;
mailMessage.Subject = subject;
mailMessage.From = new MailAddress(from);
mailMessage.To.Add(new MailAddress(to));
mailMessage.Bcc.Add(new MailAddress(bcc));
smtpClient.Send(mailMessage);
}
Je ne suis pas sûr de savoir comment faire.
C'est mon sendEmail fonction javascript sur mon projet MVC (à l'aide de knock-out):
self.sendEmail = function (to, from, body, subject, bcc) {
$.ajax({
url: "../API/functions/email",
type: "POST",
data: {
'to': to,
'from': from,
'body': body,
'subject': subject,
'bcc' : bcc
},
contentType: "application/json",
success: function (data) {
console.log(ko.toJSON(data));
}
});
}
Comment pourrais-je obtenir les données de publication dans le site Web de l'API?
Est ma fonction javascript correct?
Merci d'avance.
OriginalL'auteur user3378165 | 2016-03-15
Vous devez vous connecter pour publier un commentaire.
Il est toujours préférable de faire un modèle, un viewmodel.
Maintenant la méthode de contrôleur sera comme:
et de l'appel ajax sera comme:
Espère que cela aidera 🙂
Je ne peux pas modifier une question, peut-être que vous devriez faire les modifications suivantes dans votre code afin de le faire fonctionner:1) vous devez définir la EmailViewModel de la classe Publique, sinon il va erroring. 2) Vous devez ajouter JSON.stringify(données) à votre champ de données dans l'appel AJAX. Avec ces changements, j'ai reçu votre code de travail. Merci!!!!
personne ne peut modifier d'autres répondent. Que je sache
JSON.stringify()
n'est pas nécessaire. Il peut automatiquement de la carte le modèle. J'ai mis à jour la réponse. Thnx pour vos commentaires.OriginalL'auteur Mahbubur Rahman
Des champs de données en js:
Doit correspondre à vos contrôleurs de noms de paramètres:
Si les matches sont MVC automatiquement les lier.
Donc, si vous voulez récupérer vos données dans le contrôleur, vous devez soit modifier votre js de contrôleur de signature.
Pour exemple, nous allons changer de contrôleur:
Yeap, la fonction de l'API sait. Votre deuxième problème dans
url
param. Je suppose qu'il devrait êtreurl: "/functions/email/",
mais je ne suis pas sûr ici.Wow c'est incroyable! Mais il ne fonctionne toujours pas, je ne pense pas que c'est un problème avec l'url param, sur l'erreur, vous pouvez voir que ce qu'il atteigne l'API, mais ne peut pas trouver une fonction appropriée pour cet appel. Une idée?
ce que je vous recommande d'essayer: changer votre url "../SharedAPI/fonctions/SendEmail" et de supprimer le contrôleur d'attribut
[Route("{controller}/Email")]
j'espère que votreSendEmail
méthode dansfunctions
contrôleur?J'ai essayé, n'est-ce pas l'aider. ce qui est vraiment weired que lorsque je supprime les paramètres de la signature sur les fonctions de l'API, je n'obtiens aucune erreur, donc je pense que quelque chose est incorrect avec la fonction du ou des paramètres de la js envoyé paramètres..
OriginalL'auteur teo van kot