Internal Server Error - jQuery ajax post

0

Mam następujący kod w skrypcie:

<script>
    function deleteUser(userId) {     
        $.ajax({
            url: '@Url.Action("DeleteUser")',
            type: "POST",
            dataType: "json",
            data: JSON.stringify({ userId: userId }),
            contentType: "application/json; charset=utf-8",
            success: function () {
                console.log("Sukces");
            },
            error: function (jqXhr) {
                console.log(jqXhr.status);
            }
        });
       getUsersList();
    }

    function appendResultToTable(usersList) {
        $("#tableResult tbody").html('');

        for (let user in usersList) {
            const rowId = user;
            $("#tableResult").find('tbody')
                .append($('<tr>')
                    .attr('id', 'rowTable' + rowId)
                .append($('<td>')
                    .append($('<p>')
                        .append(usersList[user].Email)))
                .append($('<td>')
                    .append($('<button>')
                        .addClass('btn btn-danger')
                        .click(deleteUser(usersList[user].Id))
                        .html('Usuń')))
                );
        }
    }

    function getUsersList() {
        $.ajax({
            url: '@Url.Action("GetUsersList")',
            type: "GET",
            dataType: "json",
            success: function (usersList) {
                appendResultToTable(usersList);
                console.log("Pobrano uzytkownikow");
            },
            error: function (jqXhr) {
                console.log(jqXhr.status);
            }
        });
    }

    $(document).ready(function () {
        console.log("Wszedlem do document on ready");
        getUsersList();
    });
</script>

Użytkowników pobiera dobrze, jednak przy próbie wywołania metody DeleteUser pokazuje się błąd w konsoli Internal Server Error. Jakieś wskazówki?

0

Przerobiłem trochę kod, ale nadal jest to samo:

<script>
    function deleteUser(userId) {     
        $.ajax({
            url: '@Url.Action("DeleteUser")',
            type: "POST",
            dataType: "json",
            data: JSON.stringify({ userId: userId }),
            contentType: "application/json; charset=utf-8",
            success: function () {
                console.log("Sukces zz");
            },
            error: function (jqXhr) {
                console.log(jqXhr.status);
                console.log("Brak sukcesu");
            }
        });
       getUsersList();
    }

    function appendResultToTable(usersList) {
        $("#tableResult tbody").html('');

        for (let user in usersList) {
            const rowId = user;
            $("#tableResult").find('tbody')
                .append($('<tr>')
                    .attr('id', 'rowTable' + rowId)
                .append($('<td>')
                    .append($('<p>')
                        .append(usersList[user].Email)))
                .append($('<td>')
                    .append($('<button>')
                        .addClass('btn btn-danger')
                        .click(e => deleteUser(usersList[user].Id))
                        .html('Usuń')))
                );
        }
    }

    function getUsersList() {
        $.ajax({
            url: '@Url.Action("GetUsersList")',
            type: "GET",
            dataType: "json",
            success: function (usersList) {
                appendResultToTable(usersList);
                console.log("Pobrano uzytkownikow");
            },
            error: function (jqXhr) {
                console.log(jqXhr.status);
            }
        });
    }

    $(document).ready(function () {
        console.log("Wszedlem do document on ready");
        getUsersList();
    });
</script>
0

Dodaje jeszcze metodę z kontrolera:

        [HttpPost]
        public async void DeleteUser(string userId)
        {
            var user = await UserManager.FindByIdAsync(userId);
            var result = await UserManager.DeleteAsync(user);
        }
0

Jeśli funkcja ma usuwać to raczej nie będzie to type: "POST"

0

Ale id usera muszę przekazać, a za pomocą get chyba nie przekazuje się danych.

Nawet jak metodę ustawie jako get jest ten sam błąd.

0

Może DELETE?

0

Próbowałem już getem, postem, deletem i ciągle jest ten sam błąd 500. Czym on może być spowodowany?

0

Zbyt mało informacji o błędzie aby stwierdzić co jest nie tak.

await UserManager.DeleteAsync(user); - nie znam Twojego kodu ale tutaj może być userId zamiast user

0

Aktualnie w przypadku delete występuje 404, czyli jakby nie znajdowało metody. W metodzie kontrolera dałem HttpDelete oraz w metodzie z ajaxem ustawiłem type jako DELETE.

Jakich informacji jeszcze potrzebujesz? W konsoli nic nie wyskakuje oprócz tego błędu.

Neqero napisał(a):

Zbyt mało informacji o błędzie aby stwierdzić co jest nie tak.

await UserManager.DeleteAsync(user); - nie znam Twojego kodu ale tutaj może być userId zamiast user

Tam ma być user, bo ta metoda usuwa usera, a nie znajduje usera po id.

0

Na pewno wysyłasz żądanie pod dobry adres?
Sprawdź w konsoli deweloperskiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0