簡體   English   中英

AJAX發布數據到達ASP.NET Core 2.1控制器時為空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM