Задать вопрос
@CapitanFreeloader

Как передать файл вместе с текстом при помощи ajax post?

Решил переписать форму добавления *чего-то там* в бд, раньше все было на чистом php, теперь хочу добавить красоты, для этих целей решено было использовать аякс.
Массив данных формирую так:
var formData = {
"title":$(".title-film").val(),
"description":$(".description").val(),
"userfile":$(".userfile"),
"country":$(".country input").val(),
"whom":$(".whom input").val(),
"year":$(".year").val(),
"age_limit":$(".age-limit input").val()
};

отправляю так
$.ajax({
                url:'admin/post'
                , type:'POST'
                , data:'jsonData=' + $.toJSON(formData)
                , success: function(res) {
                    alert(res);
                }
            });


На стороне php ничего необычного, куча проверок и разные методы (в тч и загрузки файла). Но файл таким образом не отправляется.
Нагуглил вариант
var $input = $(".userfile");
 var fd = new FormData;
fd.append('img', $input.prop('files')[0]);

Ну и дальше постом попытался отослать только переменную fd. Если на сторое php ловить как post то получаю [objest FormData], если ловить как files - пусто.
Как быть? Как отправить и текст и картинку в одном посте?
В остальном на форумах шлют на другие форму где шлют на другие форумы.
  • Вопрос задан
  • 2398 просмотров
Подписаться 1 Оценить 4 комментария
Решения вопроса 1
@OVK2015
Правильно гуглите.
var fd = new FormData;
fd.append('img', $input.prop('files')[0]);
fd.append('someField', 'someText');
Методом пост отправляете.
В ajax
processData: false
contentType: false
поле data : fd
На сервере получаете $_POST["someField"] - также и для др. данных
файл лежит в $_FILES["img"]["tmp_name"]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы