Comment importer / télécharger des fichiers avec jQuery AJAX?
2 réponses
- votes
-
- 2012-11-01
Jen'aipasessayémaisje pense que vous devez ajouter l'objet
FormData
directementen tant queparamètredata
.Quelque chose comme çavar ajaxData = new FormData(); ajaxData.append( 'action', 'ajax_handler_import' ); ajaxData.append( '_ajax_nonce', importNonce ); // or maybe skip the nonce for now jQuery.each($('#fileImportData')[0].files, function(i, file) { ajaxData.append('file-'+i, file); });
Le reste de votre codefonctionnetel quel
I haven't tried but i think you need to add
FormData
object directly asdata
parameter. Something like thisvar ajaxData = new FormData(); ajaxData.append( 'action', 'ajax_handler_import' ); ajaxData.append( '_ajax_nonce', importNonce ); // or maybe skip the nonce for now jQuery.each($('#fileImportData')[0].files, function(i, file) { ajaxData.append('file-'+i, file); });
The rest of your code goes as it is
-
Désolé dene pas avoir réponduplustôt ... J'essayais determiner unprojet,et j'aipensé queje reviendrais quandj'auraisplus de connaissances sur le sujet.Merci d'avoirfourni la solution,je ne savaispas que l'ajout de l'objet FormData à un objet legâcherait,et j'étais à court d'idées.Chiffres ce serait un simpleproblème xP.La leçon appriseici: évitez les objetsmixtes.Sorry I haven't replied sooner...I was trying to finish out a project, and figured I'd come back when I have more knowledge on the subject. Thanks for providing the solution, I didn't know adding the FormData object to an object would mess it up, and I was running out of ideas. Figures it would be a simple problem xP. The lesson learned here: stay away from mixed objects.
- 0
- 2012-12-01
- EkoJR
-
Sans oublier que celane fonctionnerapas sur les versions IE9et inférieures d'IE.Not to mention this won't work on IE9 and below IE versions.
- 0
- 2015-11-03
- Arda
-
- 2012-11-01
Ajax au senstraditionnel dutermeest XMLHttpRequest,quine vouspermetpas d'encoderet d'envoyer desfichiers locaux à un serveur.
Lesméthodes courantes detéléchargement via "ajax" sont soit d'utiliser un swf Flashpourgérer letéléchargement sur lamêmepage,soit d'utiliser unformulaire qui apour cible uneiframe 1x1invisible.
Voici une questiontrès similaire avec une bonne réponse pour voir comment vouspouvez yparvenir
Ajax in the traditional sense is XMLHttpRequest, which does not allow you encode and send local files to a server.
The common ways of doing uploading through "ajax" means, is to either use a Flash swf to handle the uploading on the same page, or to use a form that has a target of an invisible 1x1 iframe.
Here is a very similar question with a good answer to see how you can do that
-
Oui,je passaispar ce Q/R récemment.Malheureusement,je ne suispasfamilier avec leflash,et j'aiessayé d'éviter d'ajouter desplugins sipossible.J'aiprincipalementessayé de suivre laméthode WordPress Ajax,mais d'après ce quej'aitrouvé,le simplefait de lepasser à ajaxest limité/limitépar lesnavigateurs.Se référantprincipalement à ce [Q/R] (http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery)m'a conduit à [FormData Objects] (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects) qui dit que c'estpossible si lenavigateur utilisé l'a.Yea, I was going through that Q/A recently. Unfortunately, I'm not familiar with flash, and I've been trying to avoid adding plugins if at all possible. I've mainly been trying to follow WordPress Ajax method, but by what I've found, just passing it to ajax is restricted/limited by the browsers. Mainly refering to this [Q/A](http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery) led me to [FormData Objects](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects) which says is possible if the browser used has it.
- 0
- 2012-11-02
- EkoJR
-
Il s'avère que vouspouvez utiliser vospropresméthodespourtransmettre des données defichier à unefonction AJAX au lieu de vousfier à unplugin JS.Pour laplupart,FormData Objects (commementionné ci-dessus),gère cela avec les opérations XMLHttpRequest Niveau 2 (tel queje le comprends actuellement),et estmaintenantprisen chargepartous lesprincipauxnavigateurs.J'aipensé que ce serait une question detemps après la sortie de HTML5.Cependant,l'utilisation deplUploadest une recommandationpossiblepour les données defichiers volumineux.It turns out that you can use your own methods for passing file data over to an AJAX function instead of relying on a JS plugin. For the most part, FormData Objects (as mentioned above), handles this with XMLHttpRequest Level 2 operations (as I currently understand it), and is supported by all major browsers now. I figured it would be a matter of time after HTML5 came out. However, using plUpload is a possible recommendation for large file data.
- 0
- 2012-12-01
- EkoJR
Jen'arrêtepas de rencontrer unproblèmepour ajouter le (s)fichier (s) dans AJAX afin que lafonction ajax du serveurpuissetraiter les données. Commentpuis-jefairepasser $ _FILES de lamêmemanière qu'avec l'actionpar défaut (intégrée aux éléments deformulaire)?
Formulaire HTML
<₹JavaScript
Serveur/gestionnaire PHP