Cod*_*841 2 c# ajax jquery post asp.net-core
我使用以下 jQuery 代码将数据发布到 ASP.NET Core MVC 2.1.2 页面:
function OnCountryChange() {
$.ajax({
url: "/OnCountryChange",
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "json",
headers: {
"RequestVerificationToken": $('input[name = __RequestVerificationToken]').val()
},
data: JSON.stringify({
sCountryCode: "Test 123"
})
});
}
Run Code Online (Sandbox Code Playgroud)
我用这种方法在控制器中收到帖子:
[HttpPost]
[ValidateAntiForgeryToken]
[Route("/OnCountryChange")]
public IActionResult OnCountryChange([FromBody] string sCountryCode)
{
logger.LogDebug($"Country code is: {sCountryCode ?? "null"}");
return Json(sCountryCode);
}
Run Code Online (Sandbox Code Playgroud)
打印到日志的输出是:
国家/地区代码为:空
原始请求正文(使用 Fiddler 查看)如下所示:
{"sCountryCode":"Test 123"}
Run Code Online (Sandbox Code Playgroud)
为什么数据传不出去?
我不熟悉C#,但在你的问题中你添加了
contentType: "application/json; charset=utf-8"
Run Code Online (Sandbox Code Playgroud)
在您的Ajax方法中,这意味着数据参数是json格式,因此您需要作为json对象访问,而不是直接访问字符串。
解决方法有两种:
A。更改控制器方法以像对象C#一样访问json
b. 发送Ajax参数不带json,代码类似如下:
function OnCountryChange() {
$.ajax({
url: "/OnCountryChange",
type: "POST",
datatype: "json",
headers: {
"RequestVerificationToken": $('input[name = __RequestVerificationToken]').val()
},
data: {sCountryCode: "Test 123"}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9629 次 |
| 最近记录: |