Загрузка данных и файлов в одной форме с использованием Ajax?

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

В настоящее время я делаю почти одно и то же с обоими методами, но способ, которым данные собираются в массив, отличается, данные используют.serialize(); но файлы используют= new FormData($(this)[0]);

Можно ли объединить оба метода, чтобы можно было загружать файлы и данные в одной форме через Ajax?

Data jQuery, Ajax and html

$("form#data").submit(function(){

    var formData = $(this).serialize();

    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

<form id="data" method="post">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <button>Submit</button>
</form>

Files jQuery, Ajax and html

$("form#files").submit(function(){

    var formData = new FormData($(this)[0]);

    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

<form id="files" method="post" enctype="multipart/form-data">
    <input name="image" type="file" />
    <button>Submit</button>
</form>

Как я могу объединить вышеперечисленное, чтобы я мог отправлять данные и файлы в одной форме через Ajax?

Моя цель - иметь возможность отправить всю эту форму в одном сообщении с помощью Ajax, возможно ли это?

<form id="datafiles" method="post" enctype="multipart/form-data">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <input name="image" type="file" />
    <button>Submit</button>
</form>

Ответы на вопрос(7)

Ваш ответ на вопрос