Отправка файла с помощью 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.
Ответы
Ответ 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,