Как отправить массив и файл через один и тот же AJAX-запрос? - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь отправить как файл изображения, так и массив через мой AJAX-запрос в мой PHP-скрипт, но ни массив, ни файл изображения не отображаются.Я обнаружил, что проблема заключается в строках, которые нужно добавить в свой AJAX при работе с файлами.

contentType: false, processData: false,

Если эти две строки добавленымассив прибывает в скрипт PHP пустой.Что я могу сделать по-другому?:)

Мой AJAX:

$('#createMember').on('submit', function(event){
    event.preventDefault();
    $("#LoadingIcon").show();

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

    $.ajax({
        url:"scripts/createMember.php",
        method:"POST",
        data:form_data,
        cache: false,
        contentType: false,
        processData: false,
        success:function(data)
        {
          $.notify({
            title: '<strong>Created!</strong><br>',
            message: 'Member is now created!'
          });
          $("#LoadingIcon").fadeOut(200);
        });
      });

Мой HTML

<form method="post" id="opretMedlem" enctype="multipart/form-data">
    <input type="text" name="info[name]" class="form-control1 info" />
    <input type="text" name="info[age]" class="form-control1 info" />
    <input type="file" name="info[image]" class="form-control1 info" />
    <input type="submit" name="submit" class="btn btn-info" value="Create member" />
</form>

1 Ответ

0 голосов
/ 02 января 2019

Вы забыли использовать enctype в запросе ajax. Также попробуйте использовать конструктор FormData () вместо сериализации данных.

$('#opretMedlem').on('submit', function(event){
    event.preventDefault();

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

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

    $.ajax({
        url:"scripts/createMember.php",
        enctype: 'multipart/form-data',
        method:"POST",
        data:data,
        cache: false,
        contentType: false,
        processData: false,
        success:function(data) {
          alert('done');
        }
   });
});

Посмотрите на скрипку: https://jsfiddle.net/up8zavtb/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...