ajax POST отправка null

96
7

Первоначально я написал вызов как 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.

Большинство исправлений, которые, как мне кажется, имеют "приложение /json". Я также установил ajax для традиционного.

спросил(а) 2021-01-27T23:51:34+03:00 2 месяца, 2 недели назад
1
Решение
96

Пройдя через кроличью маркеры безопасности и проверяя формы, это не было ничем... это может быть решением для всех, кто использует 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());
}

ответил(а) 2021-01-27T23:51:34+03:00 2 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема