@hollanditkzn

Почему не работает код для отправка файла через AJAX?

Не могу понять почему не отправляет файл с телефоном в php? Кто может мне подсказать. Пошаговая инструкция, что когла пользователь указывает номер телефона и выберает изображение при отправке есть запрос в браузере, но как понимаю в php ничего не приходит так как я все уже комментировал и выставлял echo "123" ничего не выводилось обратно. Примеру вот что я вижу в браузере
c7ce841d883d4d0db71dba8d391d1598.png
Весь код на ajax и html
$(document).ready(function(){
$("#forma1").on("submit",function(e){
					e.preventDefault();
					var formData = new FormData(this);
					$.ajax({
						url: "sendEmail.php",
						type: "POST",
						processData: false,
						contentType: false,
						data: formData,
						cache: false,
						success: function(data){
						$("#phonePhotoModal").text(data);
						}
					});
				});
});
<div class="modal-body callCustomModal" id="phonePhotoModal">
									<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
									<p class="lead">Оставьте свой номер телефона и наш специалист с Вами связжется</p>
									<form id="forma1">
									<input type="phone" id="phonePhoto" name="phonePhoto" class="callCustomInput" placeholder="7(9__) ___-__-__" required>
									<input type="file" id="imgFile" name="imgFile" accept="image/jpeg, image/png">
									<button type="submit" id="phonePhotoBut" class="buttonModal">Оставить номер</button>
									</form>
								</div>
  • Вопрос задан
  • 548 просмотров
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
jQuery не умеет работать с FormData, используйте обычный XHR.

$("#forma1").on("submit", function(e) {
    e.preventDefault();

    var formData = new FormData(this);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', $(this).attr('action'), true);
    xhr.onreadystatechange = function() {
        if(xhr.readyState == 4) {
            if(xhr.status == 200) {
                $("#phonePhotoModal").text(xhr.responseText);
            }
            else {
                // Обработчик ошибки
            }
        }
    };
    xhr.send(formData);
}


И добавьте в объявление формы атрибут enctype с соответствующим значением:
<form id="forma1" method="post" action="sendEmail.php" enctype="multipart/form-data">
    ...
</form>
Ответ написан
@WQP
Используйте

var formData = new FormData($('form')[0]);
$.ajax({
      type: "POST",
      processData: false,
      contentType: false,
      url: "some.php",
      data:  formData 
      })
      .done(function( data ) {
                       
      });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект