c# - ajax POST 发送空值
问题描述
我最初将调用编写为 GET,但发现 URI 的长度存在限制。理想情况下,调用将获取一个对象并将其转换为 JSON 格式的字符串,然后将其发送到将加密该字符串的控制器。如果成功,控制器将发回真/假。
我的 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 设置为传统的 .
解决方案
在通过安全令牌和验证表单的兔子洞之后,它不是任何一个......这可能是任何使用 ASP.NET Core 2.1 MVC(5?)或只是一般的人的解决方案。可能是语法错误、返回类型错误或两者兼而有之。
新阿贾克斯
$.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());
}
推荐阅读
- jquery - 隐藏每个点击的按钮
- python - 如果缺少字符,则加入行
- javascript - 如何使点击事件侦听器仅在移动屏幕尺寸上工作?
- javascript - 多个单个 onClick 事件
- dart - 在 CupertinoNavigationBar 中,我如何在前导中显示除后退按钮之外的按钮?
- sql - 如何操作 DB2 存储过程内部调用的存储过程返回的结果集
- request - 使用 create-react-app 向后端发出请求时 URI 无效
- c++ - 提升正则表达式 cpp 以查找 %% 之间的字符串,输出不包括 % 字符本身
- php - 如何使用opencart3在产品页面中显示upc?
- android - 如何解决 RenderMode OpenGL