通过电子邮件将 AJAX POST 发送到 Web API

email AJAX POST to web api

本文关键字:Web API POST 电子邮件 AJAX      更新时间:2023-09-26

我有客户端函数,例如:

        var sendEmail = function (msgData) {
            jQuery.support.cors = true;
            var test = msgData;
            $.ajax({
                url         : "Api/EmailData/Send/{}",
                type        : "POST",
                data        : JSON.stringify(msgData),
                contentType : "application/json; charset=utf-8",
                success     : function (data) {
                },
                error: function (error) {
                }
            });
    };

Web控制器方法如下:

        [Route("Api/EmailData/Send/{clientEmail}"), HttpPost]
        public HttpResponseMessage ContactUs(string clientEmail)
        {
            EmailBody emailbody = JsonConvert.DeserializeObject<EmailBody>    (clientEmail);
            var result = MyDataRepository.ContactUs(emailbody);
            return Request.CreateResponse(result == false ?     HttpStatusCode.ExpectationFailed : HttpStatusCode.OK);
        }

我的数据与我检查的预期电子邮件类别匹配。但是我仍然找不到 404。如果我在 FIDDLER 中运行,我会得到响应状态为 204 无内容。我还包含在我的 Fiddler 标头中:

内容类型:应用程序/JSON

我怎样才能让它从我的 JS 客户端和小提琴手工作。任何指示赞赏。注意,我在 IIS 中的数据站点上为我的客户端提供了"允许-访问控制-源"。我还尝试从我的 JS 客户端中删除 JSON.stringify,如其他地方的建议。不知道我错过了什么。任何帮助。谢谢

看起来您的网址格式不正确。 如果我的怀疑是正确的,url末尾的"/{}"可能是您问题的根源。

这里的 {} 很好,因为您在 api 控制器端声明了这一点

    [Route("api/stuff/data/{id:int}")]
    public Data GetDataById(int id)
    {
        // your code here
        return data;
    }

但是在您的 ajax 调用中,只需传递不带大括号的 url

       $.ajax({
            type: 'POST',
            url: "Api/EmailData/Send",
            data: JSON.stringify(actionData),
            traditional: true,
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) { },
            error: function (e) {  }
        });