电子邮件 AJAX POST 到网站 api

email AJAX POST to web api

我有客户端功能,例如:

        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);
        }

我的数据与我检查过的预期电子邮件 class 相符。但是我仍然收到 404 not found。如果我在 FIDDLER 中 运行 我得到的响应状态为 204 No Content.I 也包含在我的 Fiddler header:

Content-type:application/json

我怎样才能让它在我的 JS 客户端和提琴手上工作。任何指针表示赞赏。请注意,我在 IIS 的数据站点上为我的客户包含了 "Allow-Access-Control-Origin"。我还尝试按照 esle 某处的建议从我的 JS 客户端中删除 JSON.stringify。不知道我错过了什么。任何帮助。谢谢

您的格式可能不正确 url。如果我的怀疑是正确的,url 末尾的“/{}”可能是您问题的根源。

这里的 {} 很好,因为您在 api 控制器端

上声明了它
    [Route("api/stuff/data/{id:int}")]
    public Data GetDataById(int id)
    {
        // your code here

        return data;
    }

但是在你的 ajax 调用中只传递 url 而没有 curly 大括号

       $.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) {  }
        });