Je ne comprends pas pourquoi jQuery ne peut pas transmettre les données de téléchargement, car l'objet AJAX semble être configuré correctement et les en-têtes Content-Type/MIME-Type corrects sont être envoyé.
J'ai essayé deux formes de demande distinctes - une avec un objet FormData contenu dans un littéral, et aussi en passant directement l'objet FormData.
Malheureusement, de toute façon, je ne peux rien faire passer, et $ _FILES et $ _POST sont des tableaux vides.
La demande idéale que je souhaite utiliser est la suivante:
Avec le code suivant:
var files = new FormData();
$.each(context.prototype.fileData, function(i, obj) { files.append(i, obj.value.files[0]); });
var request = { action: 'upload', id: response.obj.id, data: files };
$.ajax({
type : 'POST',
url : context.controller,
data : request,
processData : false,
contentType : 'multipart/form-data',
mimeType : 'multipart/form-data',
success : function(r) {
console.log(r);
//if (errors != null) { } else context.close();
},
error : function(r) { alert('jQuery Error'); }
});
Encore une fois, la seule réponse (en regardant à la fois l'onglet Réseau et la console) lorsque j'essaie d'exporter à la fois $ _FILES et $ _POST est simplement deux tableaux vides ...
Vous devez passer l'objet FormData
comme paramètre de données
var request = new FormData();
$.each(context.prototype.fileData, function(i, obj) { request.append(i, obj.value.files[0]); });
request.append('action', 'upload');
request.append('id', response.obj.id);
$.ajax({
type : 'POST',
url : context.controller,
data : request,
processData : false,
contentType : false,
success : function(r) {
console.log(r);
//if (errors != null) { } else context.close();
},
error : function(r) { alert('jQuery Error'); }
});