Подтвердить что ты не робот

Отправка файла с помощью jQuery.ajax дает TypeError

Я пытаюсь отправить файл из формы с помощью метода jQuery ajax:

var ofile=document.getElementById('image').files[0];
var formdata = new FormData();
formdata.append("image",ofile);

$.ajax({
    url:'elements/save_elements',
    data:formdata,
    type:'POST'
});

Это приводит к ошибке TypeError: 'append' called on an object that does not implement interface FormData.

Что вызывает эту ошибку? Это не происходит на фактическом formdata.append, но внутри jQuery.

4b9b3361

Ответ 1

У меня была такая же проблема с похожим кодом. Там суровая нехватка информации об этой ошибке, так как ОП не уточнил:

С некоторой отладкой я понял, что ошибка была вызвана вызовом ajax в глубинах jquery, а не фактическим добавлением. Оказывается, я забыл добавить processData: false, contentType: false в запрос ajax; Это устранило проблему.

Ответ 2

Он отлично работает, когда вы добавляете следующее к объекту ajax:

contentType: false,
processData: false,

Итак, это должно выглядеть так:

$.ajax({
    url:'elements/save_elements',
    data:formdata,
    type:'POST',
    contentType: false,
    processData: false,
});

Ответ 3

Добавление этих параметров в ajax решает проблему

$.ajax({
      url: 'upload_ajax.php',
       type: 'POST',
       data: formData,
       contentType: false,
       processData: false,