Загрузка AJAX с вводимым текстом и входным файлом на PHP

#javascript #php #web

#javascript #php #веб

Вопрос:

На сайте JS необходимо отправить ajax, содержащий входной файл, для загрузки и ввода текстов

 var formdata = new FormData();
    formdata.append("id",$('#id').val());
    formdata.append("upload_url",$('#upload_url').val());
    formdata.append("type",$('#type').val());
    formdata.append("file",$('#upload').prop('files')[0]);
    formdata.append("label",$('#label').val());
    formdata.append("filter_from",$('#filter_from').val());
    formdata.append("filter_to",$('#filter_to').val());
    formdata.append("zone_geographique",$('#zone_geographique').val());
    formdata.append("actif",$('#actif').val());
    formdata.append("leafs",$('#affectedLeafs').val());
    $.ajax({
        url: 'form.php?action=formation_save',
        data: formdata,
        processData: false,
        contentType: false,
        type: 'POST',
        success: function() {
            $('.formationSection > div').slideToggle();
        }
    });
  

Но когда на стороне PHP в файле formation_save я делаю a $_POST , PHP возвращает мне NULL .

и когда я это делаю file_get_contents("php://input"); , PHP также возвращает мне NULL

Но почему? Как заставить его работать?

PHP-код

 <?php

    $postValues = $_POST;
    $phpinput = file_get_contents("php://input");
    
    var_dump($postValues);var_dump($phpinput);
  

Комментарии:

1. конкретная форма в formdata, например var formdata = new FormData(#idform);

2. укажите также. enctype: 'multipart/form-data',

3. Я протестировал этот код, и запрос выглядит абсолютно нормально в консоли браузера; он использует multipart / form-data, как и предполагалось. Можете ли вы показать свой PHP-код?

4. @SimoneRossaini Я не думаю, что вам нужно указывать идентификатор формы, если вы не хотите захватывать поля этой формы

5. @swadhwa я не понимаю, зачем добавлять все входные данные вместо использования formdata(form) и добавлять только изображение.