[英]AJAX post data is null when it reaches the ASP.NET Core 2.1.1 controller
[英]AJAX post data is null when it reaches the ASP.NET Core 2.1 controller
我正在使用以下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"
})
});
}
我正在使用這種方法在控制器中接收帖子:
[HttpPost]
[ValidateAntiForgeryToken]
[Route("/OnCountryChange")]
public IActionResult OnCountryChange([FromBody] string sCountryCode)
{
logger.LogDebug($"Country code is: {sCountryCode ?? "null"}");
return Json(sCountryCode);
}
打印到日志的輸出是:
國家/地區代碼為:空
原始請求正文(使用Fiddler查看)如下所示:
{"sCountryCode":"Test 123"}
為什么不傳遞數據?
我對C#
不熟悉,但是在您的問題中,您需要添加
contentType: "application/json; charset=utf-8"
在您的Ajax
方法中,這意味着data參數是json
格式,因此您需要作為json
對象訪問,而不是直接訪問字符串。
有兩種解決方法:
一種。 更改您的C#
控制器方法以像json
對象一樣進行訪問
b。 發送不帶json
Ajax
參數,代碼類似於以下內容:
function OnCountryChange() {
$.ajax({
url: "/OnCountryChange",
type: "POST",
datatype: "json",
headers: {
"RequestVerificationToken": $('input[name = __RequestVerificationToken]').val()
},
data: {sCountryCode: "Test 123"}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.