gpt4 book ai didi

javascript - 无法在 asp.net core 中使用 ajax 将 json 发布到 Controller

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:10:41 25 4
gpt4 key购买 nike

我有以下代码

Controller 操作方法

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

问题
在服务器上,在 approve 操作方法中,ids 参数始终为空。

我也试过发送数据

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

我正在将 ASP.NET Core 与目标框架 1.1 一起使用。

我在经典的 asp.net 中有相同的代码并且它有效

最佳答案

似乎您正在发送一个对象 {ids:getIDs()} 但在您的 Controller 中您期望一个 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,
})

关于javascript - 无法在 asp.net core 中使用 ajax 将 json 发布到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48696992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com