无法在asp.net core中使用ajax将json发布到控制器

2024-01-08

我有以下代码

控制器动作方法

    [HttpPost]
    public async Task<IActionResult> Approve(int[] ids)
    {
        await _service.Approve(ids).ConfigureAwait(false);
        return Json("Success.");
    }

在客户端,我有以下内容来发布数据

var data = JSON.stringify(getIDs())

   $.ajax({
        type: "POST",
        data: data,
        url: "approve",
        contentType: "application/json; charset=utf-8",
        processData: true,
        cache: false,
        })
        .done(function (response, textStatus, jqXHR) {
            // do something here
        })
        .fail(function (jqXHR, textStatus, errorThrown) {
            // do something here
        })

 function getIDs() {
        var keys = [];
         keys.push(1);
         keys.push(2);
         keys.push(3);
        return keys;
    }

ISSUE
在服务器上,在批准操作方法中ids参数始终为空。

我也尝试过发送数据

var data = JSON.stringify({ids:getIDs()})

我正在使用 ASP.NET Core 和目标框架 1.1。

我在经典的 asp.net 中有相同的代码并且它可以工作


看来你正在发送一个对象{ids:getIDs()}但在你的控制器中你期望array并且您没有具体说明它将来自哪里。

像这样改变你的代码。

[HttpPost("approve")]
public async Task<IActionResult> Approve([FromBody]Data data)
{
    await _service.Approve(data.ids).ConfigureAwait(false);
    return Json("Success.");
}

public class Data
{
    public int[] ids { get; set; }
}

或者如果您希望直接将数组发送到Ajax POST

[HttpPost("approve")]
public async Task<IActionResult> Approve([FromBody]int[] ids)
{
    await _service.Approve(ids).ConfigureAwait(false);
    return Json("Success.");
}

Ajax...

$.ajax({
    type: "POST",
    data: JSON.stringify(getIDs()), //I assume getIDs returns an array of integers
    url: "/approve",
    contentType: "application/json; charset=utf-8",
    processData: true,
    cache: false,
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在asp.net core中使用ajax将json发布到控制器 的相关文章

随机推荐