Форма Ajax с вводом файлов и текста

Я пытаюсь создать форму загрузки ajax, которая отправляет как файл, так и ввод текста. Мне удалось отправить файл со следующим кодом:

var $form = $('#form');
var formData = new FormData();

formData.append('file', $('#file')[0].files[0]);

$.ajax({
    url: 'upload.php',
    type: 'POST',
    dataType: 'html',
    data: formData,
    processData: false,
    contentType: false
});

Однако мне также нужно отправить текстовый ввод, поэтому я попытался передать всю форму объекту FormData:

var $form = $('#form');
var formData = new FormData($form);

$.ajax({
    url: 'upload.php',
    type: 'POST',
    dataType: 'html',
    data: formData,
    processData: false,
    contentType: false
});

Но тогда я ничего не получаю в «upload.php»

Как я могу отправить текст и ввод файла вместе?

Спасибо!


person tamir    schedule 18.06.2012    source источник


Ответы (1)


Нашел этот ответ (Предыдущий ответ) после долгих поисков и отлично работает в моем приложении:

$("form#data").submit(function(){

var fd = new fd($(this)[0]);

var request = jQuery.ajax({
  url: gurl,
  type: 'POST',
  cache: false,
  contentType: false,
  processData: false,
  data: fd
  });

Я бы также проверил ваш вызов AJAX, dataType: 'html' может вызвать ошибки.

person J W    schedule 21.02.2013
comment
Будьте осторожны, так как в браузерах, отличных от HTML 5, то есть в версиях IE ‹ 10, это решение не будет работать, поскольку FormData — это объект HTML5, которого нет в IE 8 или 9. - person user1697113; 21.03.2016