Изображение в форме, не отправленное через ajax

#jquery #ajax #forms #file-upload

#jquery #ajax #формы #загрузка файла

Вопрос:

Я добавил файл ввода в форму, и, похоже, я не могу заставить файл пройти через. Вот форма (за вычетом всех остальных полей)

 <form method="post" action="ajax_mm_order.php" enctype="multipart/form-data" id="mm_form">
<input id="image_file" type="file" name="photo_for_card" />
<input type="button" id="submit_button" value="Place Order" />
</form>
  

Javascript / jquery, который его отправляет:

 $.ajax({
            type: "POST",
            url: "ajax_mm_order.php",
            data: $("#mm_form").serialize(),
            success: function(msg){
                $(".form_style_header").fadeOut("slow");
                $(form_css).fadeOut("slow", function(){
                    $(form_complete).fadeIn("slow");
                });

            }
        });
  

когда данные формы попадают ajax_mm_order.php все остальные данные получены просто отлично, но $_FILES полностью пуст. Что-то не так с моим вызовом ajax?

Ответ №1:

Вы не можете отправить файл через ajax. Наиболее распространенный способ на самом деле является просто прославленным «взломом» — многие библиотеки в основном создают iframe, а затем публикуют содержимое из этого iframe на ваш URL (и поскольку это всего лишь iframe, это не приводит к полному обновлению вашей родительской страницы).

Я бы попытался найти хорошую библиотеку загрузки файлов ajax, которую вы хотите использовать. Мне лично нравится эта библиотека.

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

1. Это совершенно верно. Я только удивлен, что jquery автоматически не ищет поле файла в форме и не выполняет метод IFRAME, если таковое найдено.