@VitStar

Как загрузить файлы с формы через ajax?

Всем привет! Делаю форму с отправкой файлов. Нашел вот эту статью и делаю как тут. Но не работает. Суть в том что там форма с оплатой и после успешной оплаты выполняется ajax запрос к обработчику. Все поля попадают норм кроме самих файлов. В чем может быть проблема ?
Ajax
c5UdL7C.png

Тут переменная file
1y3OzIW.png
пустая получается
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 5
@BI0R0B0T
Проблема в том что у JS нет доступа к локальным файлам пользователя. И он не может их обработать.
Ответ написан
А если собирать данные не с помощью jQuery, а formData
https://learn.javascript.ru/xhr-forms#formdata

Только придется добавить опции для ajax запроса. В конце этой статьи есть пример.
Ответ написан
MSkitalec
@MSkitalec
  1. Используйте FormData. Примеры использования можно найти в интернете.
    Нужно упомянуть что старые браузеры это не поддерживают
  2. Можно использовать отправку через iframe. Научиться можно тут
  3. Использовать FileReader. Примеры использования можно найти в интернете.
    Поддерживается не всеми браузерами


Возможно есть и другие способы. Буду рад если кто-то покажет ;)
Ответ написан
@glagolew059
frontend developer
$('form').submit(function(e){
    e.preventDefault();

    data = new FormData(this);
    xhr = new XMLHttpRequest();

    xhr.open( 'POST', '/url', true );
    xhr.onreadystatechange = function ( response ) {
        if (xhr.readyState == XMLHttpRequest.DONE) {
            console.log(xhr.responseText);
        }
    };
    xhr.send( data );

});
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы