ajax POST发送空值

时间:2018-08-13 15:57:26

标签: c# ajax model-view-controller .net-core

我最初将调用编写为GET,但发现URI的长度受到限制。理想情况下,该调用将采用一个对象并将其转换为JSON格式的字符串,然后将其发送到将对该字符串进行加密的控制器。如果成功,则控制器将发送回true / false。

我的POST问题,一旦到达控制器,从ajax设置的数据参数为空。

这是ajax / js:

var encActionURL = '@Url.Action("Encrypt", "Home")';
$.ajax({
    url: encActionURL,
    type: "POST",
    contentType: "application/json; charset=utf-8;",
    dataType: "json",
    async: true,
    traditional: true,
    data: { jsonDoc: JSON.stringify(jsonDataFile) },
    success: /*OnSuccess*/ function (result) {
        // DO STUFF;
    }
});

这是控制者:

[HttpPost]
public bool Encrypt(string jsonDoc)
{
    return serverConnection.Encrypt();
}

请注意,当我简单地将类型更改为'GET'时,效果很好,但是当表单过长时,则会引发414状态错误。

大多数修复程序发现我似乎拥有的是'application / json'。我还将ajax设置为 traditional

1 个答案:

答案 0 :(得分:0)

经历了安全令牌和验证形式的麻烦之后,这还不是全部...对于使用ASP.NET Core 2.1 MVC(5?)或通常而言的任何人,这可能都是一个解决方案。可能是语法错误,返回类型错误或组合错误。

新Ajax

$.ajax({
    url: encActionURL,
    type: "POST",
    data: { 'jsonDoc': JSON.stringify(jsonDataFile) }, // NOTICE the single quotes on jsonDoc
    cache: false, 
    success: /*OnSuccess*/ function (result) {
        // DO STUFF;
    }
});

新控制器

    [HttpPost]
    public ActionResult EncryptJSON(string jsonDoc) // Switch to ActionResult, formerly JsonResult
    {
        return Json(serverConnection.Encrypt());
    }
相关问题