J'essaie de soumettre un fichier à partir d'un formulaire à l'aide de la méthode ajax
de jQuery:
var ofile=document.getElementById('image').files[0];
var formdata = new FormData();
formdata.append("image",ofile);
$.ajax({
url:'elements/save_elements',
data:formdata,
type:'POST'
});
Cela entraîne l'erreur TypeError: 'append' called on an object that does not implement interface FormData
.
Qu'est-ce qui cause cette erreur? Cela ne se produit pas sur le formdata.append
, mais dans jQuery.
J'avais le même problème avec un code similaire. Il y a une grave pénurie d'informations sur cette erreur, aussi, puisque le PO n'a pas précisé:
Avec un peu de débogage, j'ai réalisé que l'erreur était générée par l'appel ajax dans les profondeurs de jquery, pas par l'ajout réel. Il s'avère que j'avais oublié d'ajouter processData: false, contentType: false
à la demande ajax; Cela a résolu le problème.
Cela fonctionne bien lorsque vous ajoutez les éléments suivants à l'objet ajax:
contentType: false,
processData: false,
Donc, cela devrait ressembler à:
$.ajax({
url:'elements/save_elements',
data:formdata,
type:'POST',
contentType: false,
processData: false,
});
L'ajout de ces paramètres à ajax résout le problème
$.ajax({
url: 'upload_ajax.php',
type: 'POST',
data: formData,
contentType: false,
processData: false,