Есть ли способ определить, почему вызов Ajax не поступает на контроллер в MVC? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь сделать AJAX-вызов, когда нажимаю на кнопку.Моя программа должна отправить запрос на сервер, чтобы получить некоторые данные и отобразить их на странице.Для простоты сначала я должен понять, как заставить вызов AJAX работать.Я попробовал следующее:

Мой контроллер в ASP.Net MVC5 C #:

[HttpPost]
public string MyMethod(int somePara)
{
    return "it worked";
}

Мой вызов AJAX:

$("button#test").on("click", function() {
  $.ajax({
    type: "POST",
    url: loc + "/MyMethod",
    data: somePara = "",
    success: function(data) {
      alert(data);
    },
    error: function() {
      alert("Error")
    }
  });
});
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<button class="btn btn-default btn-lg btn-block" id="test">
    <span class="glyphicon glyphicon-time"></span>
    Test
</button>

(где поле loc в вызове AJAX будет определять мой контроллер.)

Когда я запускаю этот код локально, мой вызов AJAXвернет часть ошибки.

Что я должен изменить?Могу ли я узнать, почему это происходит?

1 Ответ

1 голос
/ 01 мая 2019

Проблемы вашего запроса

  • Неправильный формат данных somePara = "111" => JSON.stringify({ somePara: "111" }),

  • Не определен dataType

    contentType: "application / json; charset = utf-8", dataType: "json",

  • Действие не вернуло формат JSON.

Действие контроллера

  [HttpPost]
    public JsonResult MyMethod(int somePara)
    {
        return Json("it worked", JsonRequestBehavior.AllowGet);
    }

AJAX

 $("button#test").on("click", function () {


       $.ajax({
                    type: "POST",
                    url:  "/Home/MyMethod", // i try home controller
                    data: JSON.stringify({ somePara: "111" }),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        alert(data);
                    },
                    error: function () {
                        alert("Error")
                    }
                });
            });

Обновление: действие должно измениться на MyMethod(int? somePara), чтобы somePara : "" нельзя было преобразовать в int.

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