Этот вопрос закрыт для ответов, так как повторяет вопрос Как загрузить изображение на сервер через AJAX?
@evgen9586
Изучаю Back-end. Люблю Android. Ненавижу Apple

Не отправляется файл через Ajax ( FormData), где может быть ошибка?

Есть такая форма
Форма

<form action="#" method="post" id="sendform" enctype="multipart/form-data">
   
            <p>
              <input name="name" value="" size="40" type="text" class="required" placeholder="Ваше имя*" />
              </label>
            </p>

            <p>
              <textarea name="message" cols="40" rows="10" placeholder="Ваше сообщение:" />Ваше сообщение:</textarea>
            </p>

            <p>
              <input type="file" class="custom-file-input">
            </p>


            <input value="Отправить" name="sendForm" type="submit" />
 
        </form>


Пробовал отправлять так:

$("#sendform").validate({
    submitHandler: function(form){
      var form = document.forms.sendform,
        formData = new FormData(form),
        xhr = new XMLHttpRequest();
      xhr.open("POST", "otzuvu/send.php");

      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4)
        {
          if(xhr.status == 200)
          {
              console.log(xhr.responseText);
            /!*$("#sendform").html('<p class="thank">Данные отправлены! Отзыв будет опубликован после проверки модератором!<p>');*!/
          }
        }
      };


      xhr.send(formData);
    }
  });


Все отправляется кроме файла. В глобальном массиве $_FILES пустота
В объекте FormData нет даже файла
5e661d86b45b5027443520.png

Решил попробовать аяксом

$("#sendform").submit(function(event){
        event.preventDefault();
        var formNm = document.forms.sendform;
        var formData = new FormData(formNm);
        // отправляем данные
        $.ajax({
            url: "otzuvu/send.php",
            type: 'POST',
            data: formData,
            contentType: false,
            processData: false,
            success: function(data)
            {
                console.log(data);
            },
        });
    });


Тоже грустно. В чём может быть причина?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
coderisimo
@coderisimo
Хотите ответ? Формулируйте вопрос КОРРЕКТНО ! :)
Попробуйте добавить файл через append.
Например, вот так :
formData.append('userpic', myFileInput.files[0], 'vasya.jpg');
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
я не эксперт в js, но var formNm = document.forms.sendform; точно вернет вам нужную форму? если уж взялись за JQ пишите нормально var formNm = $('#sendform')[0]; На скринах передачи данных НЕ ВИДНО, скорее всего их там и нет.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы