【问题标题】:Sending data to MVC Action via jQuery ajax, parameter is null通过 jQuery ajax 向 MVC Action 发送数据,参数为空
【发布时间】:2017-07-05 15:20:27
【问题描述】:

我在这里遇到了几个与此相关的问题,到目前为止,没有一个问题能解决我的特定问题。我正在使用 ajax 将与 DataGrid 中选定行相关的数据发送到服务器上的操作。 JavaScript 代码如下所示:

function addSelected() {
        var grid = $("#optionsGrid").dxDataGrid("instance");
        var gridData = grid.getSelectedRowsData();

        $.ajax({
            type: "POST",
            url: "/api/Options/AddRange",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ data: gridData })
        });
    }

服务器上的操作(目前):

[HttpPost("api/[controller]/[action]")] 
public async Task<IActionResult> AddRange(string data)
{

    return Ok();
}

我在浏览器中检查过它,gridData 值在发送到服务器之前肯定填充了我想要的数据,并且操作被命中,但“数据”参数始终为空。我还尝试将 [FromBody] 属性放在参数上,但它没有改变它。无论我如何命名数据或是否将其字符串化,参数都是空的。

将数据类型更改为动态也没有帮助,它仍然为空。需要发送的数据在检查时也包含在请求正文中。

【问题讨论】:

  • 您是否检查过请求中是否发送了数据?也就是说gridData有值吗?
  • 我建议您使用 Fiddler 或任何类似的工具,并查看实际发送到服务器的内容
  • 当我在浏览器工具中检查请求时,数据被编码并包含在请求正文中。
  • 尝试向您的 gridData 添加一个额外的 JSON.stringify,这样您最终会得到 JSON.stringify({ data: JSON.stringify(gridData) })

标签: jquery ajax asp.net-core-mvc


【解决方案1】:

试试这个方法

function addSelected() {
    var grid = $("#optionsGrid").dxDataGrid("instance");
    var gridData = grid.getSelectedRowsData();

    $.ajax({
        type: "POST",
        url: "/api/Options/AddRange?data=" + JSON.stringify(gridData),
        contentType: "application/json; charset=utf-8"
    });
}

【讨论】:

  • 这行得通,但必须从参数中删除 [FromBody] 属性。
【解决方案2】:

data 的参数名称在 stringify 中,您仍然需要指定您要发送 data 作为参数。如下切换:

function addSelected() {
    var grid = $("#optionsGrid").dxDataGrid("instance");
    var gridData = grid.getSelectedRowsData();

    $.ajax({
        type: "POST",
        url: "/api/Options/AddRange",
        contentType: "application/json; charset=utf-8",
        data: { data: JSON.stringify(gridData) }
    });
}

【讨论】:

  • 仍然为空,我不知道为什么。感觉这应该是正确的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多