Wie importiere / lade ich Dateien mit jQuery AJAX hoch?
2 Antworten
- Stimmen
-
- 2012-11-01
Ich habeesnicht versucht,aberich denke,Siemüssen das
FormData
-Objekt direkt alsdata
-Parameter hinzufügen.Soetwasvar 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); });
Der Rest Ihres Codesbleibt wieerist
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
-
Entschuldigung,ich habenichtfrühergeantwortet ... Ich habe versucht,ein Projekt abzuschließen,und dachte,ich würde wiederkommen,wennichmehr Wissen zu diesem Thema habe.Vielen Dankfür die Bereitstellung der Lösung. Ich wusstenicht,dass das Hinzufügen des FormData-Objekts zueinem Objektes durcheinanderbringen würde,undmirgingen die Ideen aus.Zahlen,es wäreein einfaches Problem xP.Die hiergelernte Lektion: Halten Sie sich vongemischten Objektenfern.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
-
Ganz zu schweigen davon,dass dies unter IE9 und darunternichtfunktioniert.Not to mention this won't work on IE9 and below IE versions.
- 0
- 2015-11-03
- Arda
-
- 2012-11-01
Ajaxim herkömmlichen Sinneist XMLHttpRequest,mit dem Sie keine lokalen Dateien codieren und aneinen Server senden können.
Die übliche Methode zum Hochladen über "Ajax"besteht darin,entwederein Flash-SWF zu verwenden,um das Hochladen auf derselben Seite durchzuführen,oderein Formular zu verwenden,das das Zieleines unsichtbaren 1x1-Iframes hat.
Hieristeine sehr ähnliche Fragemit einer guten Antwort ,um zu sehen,wie Sie dastun können
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
-
Ja,ich habe kürzlich diese Frage/Antwort durchlaufen.Leiderbin ichmit Flashnicht vertraut und habe versucht,das Hinzufügen von Pluginsmöglichst zu vermeiden.Ich habe hauptsächlich versucht,der WordPress Ajax-Methode zufolgen,abernach dem,wasichgefunden habe,wird die Übergabe an Ajax durch die Browsereingeschränkt.Wennichmich hauptsächlich auf dieses [Q/A] (http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery)bezog,gelangteich zu [FormData Objects] (https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects),wasbesagt,dass diesmöglichist,wenn der verwendete Browser dies hat.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
-
Es stellt sich heraus,dass Sie Ihreeigenen Methoden verwenden können,um Dateidaten aneine AJAX-Funktion zu übergeben,anstatt sich aufein JS-Plugin zu verlassen.FormData Objects (wie obenerwähnt)behandelt diesgrößtenteilsmit XMLHttpRequest Level 2-Operationen (wieiches derzeit verstehe) und wirdjetzt von allengängigen Browsern unterstützt.Ich dachte,es wäreeine Frage der Zeit,bis HTML5 herauskommt.Die Verwendung vonplUploadistjedocheine mögliche Empfehlungfürgroße Dateidaten.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
Ich stoßeimmer wieder aufein Problembeim Abrufen der Datei (en)in AJAX,damit die Server-Ajax-Funktion die Daten verarbeiten kann. Wie kannich dafür sorgen,dass $ _FILES wiebei der Standardaktion (in Formularelementeintegriert) übergeben wird?
HTML-Formular
JavaScript
PHP Server/Handler