C # не получает данные от Ajax - PullRequest
0 голосов
/ 11 февраля 2019

У меня проблема с отправкой данных 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
});

Ответы [ 4 ]

0 голосов
/ 11 февраля 2019

попробуйте изменить тип содержимого на «application / json; charset = utf-8» и отправить имя параметра в URL-адрес следующим образом:

$.ajax({
   type: 'POST',
   contentType: "application/json;charset=utf-8",
   url: "https://localhost:44374/api/task?result=" + result,
   cache: false,
   success: function (data) {
   // Process the received data.
   }
});
0 голосов
/ 11 февраля 2019

Вы должны изменить HttpPost в Controller и изменить тип результата на JsonResult.

0 голосов
/ 11 февраля 2019

Попробуйте изменить type на type:GET - потому что ваш метод действия контроллера - HTTPGET и contentType на: contentType: 'application/json; charset=utf-8 и data на data: JSON.stringify({ result: result })

0 голосов
/ 11 февраля 2019

Измените метод GET в контроллере на метод POST.Поскольку в вашем вызове ajax вы указываете тип как post.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...