jQuery ajax Post String参数,MVC操作方法获取null



我在网上看到了很多有关这种问题的文章,并尝试了其他方法,例如JSON.STRINGITION参数,但它们都在我的情况下不起作用。

我认为这应该是一种非常简单,直截了当的编码体验。但无法弄清楚我做错了什么。

这是我的jQuery代码:

$(document).ready(function () {
    $('#SendEmails').click(function () {
        var emails = $("#EmailList").val();     
        $.ajax({
            url: '/Requests/SendEmails',
            type: "POST",
            data: { 'emails': emails },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                alert(response.responseText);
            },
            error: function (response) {
                alert(response.responseText);
            },
            failure: function (response) {
                alert(response.responseText);
            }
        })
    })
})

我的动作方法就像:

[HttpPost]
public string SendEmails(string emails)
{
    return "Good";
}

在调试代码时,我总是会在动作方法中发挥无效。

但是,如果我将URL更改为:

url: '/Requests/SendEmails?emails=' + emails,

并删除

data: { 'emails': emails },

它将起作用。

任何人都可以指出原始代码有什么问题?我不认为.net core 2.x应该有任何区别吗?

谢谢。

最后,在尝试了许多组合之后,我在更改后在下面找到了下面的代码工作:

  1. 使变量json.stringify
  2. 添加[来自body]在动作方法中

感谢Arunraja的提示,[来自Body]必须从身体读取字符串类型参数。

$(document).ready(function () {
    $('#SendEmails').click(function () {
        var emails = $("#EmailList").val();     
        $.ajax({
            url: '/Requests/SendEmails',
            type: "POST",
            data: JSON.stringify(emails),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
                alert(response.responseText);
            },
            error: function (response) {
                alert(response.responseText);
            },
            failure: function (response) {
                alert(response.responseText);
            }
        })
    })
})
[HttpPost]
public string SendEmails([FromBody]string emails)
{
    return "Good";
}

要传递身体中的原始类型,然后您必须在WebAPI控制器方法中添加[从body]添加[从body]添加。

[HttpPost]
public string SendEmails([FromBody]string emails)
{
    return "Good";
}

最新更新