Как отправить массив с formdata в ajax-запросе к действию mvc

Я пытался отправить массив с данными формы в действие с Ajax-запросом, но всякий раз, когда я получаю, я получаю как данные формы, так и массив пустой

$scope.SubmitForm = function () {
        var sLangs = $("#supportedLanguages").data("kendoMultiSelect").value();    

        var formdata = new FormData($('#frmAppSettings').get(0));

        alert(formdata.SelectedLanguages);

        var data = new FormData(document.getElementById("frmAppSettings"));
        $.ajax({
            type: "POST",
            url: "/AppMenuMaker/AppSettings",
            data: JSON.stringify({ AppSettingsView: formdata, SelectedLangs: sLangs }),
            processData: false,
            contentType: false,
            success: function () {

            }
        });
    }`

У меня есть следующие действия

    [HttpPost]
    [Authorize]
    public ActionResult AppSettings( ApplicationSettingsViewModel AppSettingsView, int[] SelectedLangs)
    {

    }

Любая помощь?

1 ответ

Решение

FormData представляет собой набор пар имя / значение, представляющих элементы управления формы и их значения, и отправляется как multipart/form-data, Ты не можешь stringify() это и / или отправить его с отдельными объектами. Вам нужно добавить к нему пары имя / значение.

Если элемент с id="supportedLanguages" находится внутри формы с id="frmAppSettings"тогда твой код

var formdata = new FormData($('#frmAppSettings').get(0));

правильно добавит значения <select> к FormData объект. Если нет, то вам нужно добавить каждое значение в массив, например

var formdata = new FormData($('#frmAppSettings').get(0));
$.each($("#supportedLanguages").val(), function(index, item) {
    formdata .append('SelectedLangs', item);
});

и тогда параметры ajax должны быть

$.ajax({
    type: "POST",
    url: '@Url.Action("AppSettings", "AppMenuMaker")', // use @Url.Action() to generate your url's
    data: formdata,
    processData: false,
    contentType: false,
    success: function () {
    }
});
Другие вопросы по тегам