gpt4 book ai didi

ajax - ASP.NET Core Razor ajax POST 请求数据对象为空

转载 作者:行者123 更新时间:2023-12-05 08:37:12 26 4
gpt4 key购买 nike

有一个简单的ajax POST 请求,必须stringify 一个简单的类并将其传递到POST 请求的正文中,但是服务器端的Person 参数有空(默认)值

// javascript
var person = { "FirstName": "Andrew", "LastName": "Lock", "Age": "31" };
$.ajax({
type: "POST",
url: "/UpdatePostBody?handler=Abc",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(person),
headers: {
RequestVerificationToken:
$('input:hidden[name="__RequestVerificationToken"]').val()
},
})
.done(function (result) {
console.log(result);
});
// C# code
public IActionResult OnPostAbc(Person person)
{
return new JsonResult("my result");
}

enter image description here

在服务器端,有一个简单的 ASP.NET Core Razor 页面,其中包含一个被命中并返回结果但 person 参数成员没有值的方法。

最佳答案

你的 Pesron 数据是空的是因为你的 Age 在类 Personint 类型。而你的人在 { "FirstName ": "Andrew", "LastName": "Lock", "Age": "31"}string类型,所以获取不到。另外,当你传递json数据时从ajax到handler,你需要在handler中添加[FromBody]。这是一个演示:

cshtml:

<button onclick="postdata()">Abc</button>
function postdata() {
//change Age type to int
var person = { "FirstName": "Andrew", "LastName": "Lock", "Age": 31 };
$.ajax({
type: "POST",
url: "/UpdatePostBody?handler=Abc",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(person),
headers: {
RequestVerificationToken:
$('input:hidden[name="__RequestVerificationToken"]').val()
},
})
.done(function (result) {
console.log(result);
});
}

cshtml.cs:

public IActionResult OnPostAbc([FromBody]Person person)
{
return new JsonResult("my result");
}

结果: enter image description here

关于ajax - ASP.NET Core Razor ajax POST 请求数据对象为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66317436/

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