У меня проблема с отправкой данных ajax из моего файла javascript на мой контроллер c #.Я получаю «ошибку неверного запроса» в моей программе на c #, и причина, по которой я это получаю, заключается в том, что параметр данных «result», который я отправляю с помощью ajax, не получает c #, а переменная c # остается нулевой.Я знаю, что Ajax маршрутизирует к правильному контроллеру, так как он вызывает метод, но по какой-то причине c # не получает переменную "result".
Вот мой запрос ajax.
$.ajax({
type: 'POST',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: { 'result' : result },
url: "https://localhost:44374/api/task",
cache: false,
success: function (data) {
// Process the received data.
}
});
Вот мой контроллер c #
[HttpPost]
public ActionResult<string> Get(string result)
{
string id = result;
getTaskContent(id);
return id;
}
После изменения Ajax на GET программа работает, и вывод:
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/1.1 GET http://localhost:44374/api/task/1108164994166723?_=1549876832637 application/x-www-form-urlencoded; charset=UTF-8
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request finished in 17.8526ms 404
Но по какой-то причине метод C # Actionresult не являетсяВыполняется.
Обратите внимание, что URL является localhost:44374/api/task/1108164994166723?_=1549876832637
, где переменная результата - 1108164994166723
, и я не имею ни малейшего представления о том, как поступает часть ?_=1549876832637
.Если я предупреждаю переменную результата в окне, это будет только 1108164994166723
Решение
Сочетание перехода на GET вместо POST и изменения URL-адреса в Ajax на url: "localhost:44374/api/task?result=" + result
, выполнил задание.
Правильный код Ajax:
$.ajax({
type: 'GET',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
url: "https://localhost:44374/api/task?result=" + result
});