Как исправить ошибку «415 неподдерживаемый медиа» на посте ajax на контроллере - PullRequest
0 голосов
/ 04 февраля 2019

В тот момент, когда происходит сообщение в контроллер, на экране появляется ошибка 415 ... поэтому я думаю, что даже если данные проходят каким-то образом, моя структура json не должна быть правильной.

Просмотр Ajax:

function SubAll() {
var selectedValues = 
$('#timesheet').DataTable().column(0).checkboxes.selected().toArray();

var instructions = []; //create array of objects
for (var i = 0; i < selectedValues.length; i++) {
instructions.push({ TimeId: selectedValues[i] });
}

var jsonObject = { MasterIds: instructions };

$.ajax({
url: "/Admin/ApproveAllTimesheets",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(jsonObject),
success: function (result) {
console.log(result);
},
error: function (xhr, textStatus) {
if (xhr.status == 401) { alert("Session Expired!"); window.location = 
"/Account"; }
else {
alert('Content load failed!', "info");
}
}
});
};

Контроллер:

public IActionResult ApproveAllTimesheets([FromBody]ValueContainer information)

Объекты класса:

public class ValueContainer
{
    public List<Value> MasterIds { get; set; }
}

public class Value
{
    public Guid TimeId { get; set; }
}

Полезная нагрузка:

{"MasterIds":[{"TimeId":"ad98749f-9083-464b-aac2-0d685a7de809"}]}

ОБНОВЛЕНИЕ # 1

Как оказалось, исправление - это способ, которым я вызывал функцию.Вместо кнопки onclick = "SubAll ()" я заменил ее на простой и используемый jQuery для перехвата события click, предотвращения его, а затем вызова функции ... и теперь ошибки 415.

Кнопка просмотра

<button id="ApproveAll" class="btn btn-success">Approve All</button>

Просмотр jQuery

 $(document).ready(function () {
        timesheet = $('#timesheet').DataTable({
            responsive: {
                details: {
                    renderer: function (api, rowIdx, columns) {
                        var data = $.map(columns, function (col, i) {
                            return col.hidden ?
                                '<tr data-dt-row="' + col.rowIndex + '" 
data-dt-column="' + col.columnIndex + '">' +
                                '<td>' + col.title + ':' + '</td> ' +
                                '<td>' + col.data + '</td>' +
                                '</tr>' :
                                '';
                        }).join('');

                        return data ?
                            $('<table/>').append(data) :
                            false;
                    }
                }
            },
            columnDefs: [
            {
                targets: 0,
                orderable: false,
                searchable: false,
                checkboxes: true
            },
            {
                targets: 5,
                visible: false
            },
            {
                targets: 6,
                visible: false
            }
            ],
            order: [
                [1, 'asc']
            ]
        });

        $('#ApproveAll').on('click',
            function (e) {
                var selectedValues = 
$('#timesheet').DataTable().column(0).checkboxes.selected().toArray();
                var instructions = []; //create array of objects
                for (var i = 0; i < selectedValues.length; i++) {
                    instructions.push(selectedValues[i]);
                }

                var jsonObject = { MasterIds: instructions };

                $.ajax({
                    url: "/Admin/ApproveAllTimesheets",
                    type: "POST",
                    contentType: "application/json;charset=utf-8",
                    data: JSON.stringify(jsonObject),
                    traditional: true,
                    statusCode: {
                        415: function () {
                            Response.redirect("/Admin/Index");
                        }
                    },
                    success: function (result) {
                        console.log(result);
                    },
                    error: function (xhr, textStatus, errorThrown) {
                        if (xhr.status == 401) { alert("Session 
Expired!"); window.location = "/Account"; }
                        else {
                            alert('Content load failed!', "info");
                        }
                    }
                });
                e.preventDefault();
            });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...