ASP.NET Core 8 MVC:从 jQuery 发布控制器中的所有值均为 null

问题描述 投票:0回答:1

我正在从 jQuery 调用控制器端点,问题是端点接收到的所有参数均为 null。

javascript

$.ajax({
    url: '/Test/SendEmailWithCode',
    type: "POST",
    async: false,
    contentType: "application/json",
        data: JSON.stringify({
            mailTo: mailTo,
            subject: subject,
            message: message,
            digit32: digit32,
            digit16: digit16,
            code: encrypt(generateCode(), digit32, digit16).toString()
        }),
    success: function (data) {
        $("#userCodeData").val("data");
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {

        }
    }
});

Controller

[HttpPost]
public JsonResult SendEmailWithCode(string mailTo, string subject, string message, string digit32, string digit16, string code)
{
    var result = _emailService.SendEmailWithCode(mailTo, subject, message);

    return new JsonResult(result);
}

显然一切都很好,但没办法,控制器中的值始终为空。

有什么帮助吗?

编辑1:

奇怪的是,如果我用 GET 替换 POST 调用(在 javascript 中输入“GET” + 在控制器中输入 [HttpGet])值会被正确接收,但事实并非如此,我在控制器中发送电子邮件,所以调用类型应为 POST。

jquery .net post model-view-controller controller
1个回答
0
投票

尝试像下面这样修改你的ajax:

$.ajax({
    url: '/Test/SendEmailWithCode',
    type: "POST",
    data:{
            mailTo: mailTo,
            subject: subject,
            message: message,
            digit32: digit32,
            digit16: digit16,
            code: encrypt(generateCode(), digit32, digit16).toString()
        },
    success: function (data) {
        $("#userCodeData").val("data");
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {

        }
    }
});

结果:

© www.soinside.com 2019 - 2024. All rights reserved.