Ajax не использует метод контроллера - PullRequest
0 голосов
/ 22 мая 2018

У меня есть следующая функция jquery, которая отправляет данные в контроллер:

function bound(e) {
    var ele = document.getElementsByClassName("e-grid")[0]
    ele.addEventListener('click', function (e) {
        if (e.target.classList.contains('e-up')) {
            var grid = document.getElementById('FlatGrid').ej2_instances[0];  //Grid Instance 
            var rowObj = grid.getRowObjectFromUID(ej.base.closest(e.target, '.e-row').getAttribute('data-uid'));
            var  data = rowObj.data;
            //alert(JSON.stringify(data));
            var code = data.ClientCode;
            $.ajax({
                type: "POST",
                url: "/Client/ShowClient",
                data: { "ClientCode": code }, //First item has latest ID
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data.length !== 0) {
                        console.log(data);
                    }
                },
                error: function (data) {
                    console.log(data);
                }
            });
        }

    });
}

И мой метод контроллера:

[HttpPost]
    public ActionResult ShowClient(string ClientCode)
    {
        if (ClientCode == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        *action*
    }

Однако я получаю 500 (Внутренняя ошибка сервера) ошибка для этого.Любая идея, что я пропускаю, потому что мой метод не ударил вообще.И я вижу, что код var имеет правильное строковое значение.

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Удалите запятые из имени параметра "ClientCode" и contentType и будет работать

        $.ajax({
            type: "POST",
            url: "/Client/ShowClient",
            data: { ClientCode: code }, //First item has latest ID
            success: function (data) {
                if (data.length !== 0) {
                    console.log(data);
                }
            },
            error: function (data) {
                console.log(data);
            }
        });
0 голосов
/ 22 мая 2018

Измените URL на это:

url: "../Client/ShowClient"
0 голосов
/ 22 мая 2018

Комментарии предоставили вам несколько советов, которые при объединении дадут вам желаемое поведение.

Во-первых, вы можете создать URL в представлении, используя @Url.Action

url: '@(Url.Action("ShowClient","Client"))',

Далее объектная модель строится неправильно

data: { ClientCode: code },

Обратите внимание на последние кавычки вокруг ключа.

И, наконец, удалите тип содержимого JSON.

Что приводит к части кода.

$.ajax({
    type: "POST",
    url: '@(Url.Action("ShowClient","Client"))',
    data: { ClientCode: code },
    success: function (data) {
        if (data.length !== 0) {
            console.log(data);
        }
    },
    error: function (data) {
        console.log(data);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...