multipart ajax submit
xpapa
- javascript
Hallo,
ich habe google wirklich viel genutzt aber habe auch so keine Lösung gefunden.
Ich habe folgendes Problem:
Ich möchte ein Formular mit Textfeldern, einer textarea und einer Datei per jquery absenden. Serverseitig ist es php.
Ich habe verschiedene Ansätze genutzt aber irgendwie finde ich keine Lösung.
Formulare übermittle ich normal per Serialisierung.
Nun möchte ich jedoch eine multipart Form übertragen.
Beispielform:
<form onsubmit="return false;" enctype="multipart/form-data" encoding="multipart/form-data" id="form-id" action="bla" method="post">
<input size="68" maxlength="255" name="X" id="X" type="text" value="lala">
<input size="60" maxlength="255" name="y" id="y" type="file">
</form>
Ich habe Beispiele für asynchrone Übertragung von Dateien gefunden, ich kann auch ohne Probleme eine Form per ajax übertragen .. Aber mit einer zusätzlichen Datei will es nicht klappen
Hallo,
Hi.
Wenn du es browserübergreifend (richtig) machen willst wirst du vermutlich wesentlich mehr zu tun haben als du denkst. Es geht. Ich würde an deiner stelle eine blick in die sourcen von bsp. fineuploader sehen, oder es einfach benutzen. :)
Mfg entropie
Hallo,
Hi.
Wenn du es browserübergreifend (richtig) machen willst wirst du vermutlich wesentlich mehr zu tun haben als du denkst. Es geht. Ich würde an deiner stelle eine blick in die sourcen von bsp. fineuploader sehen, oder es einfach benutzen. :)
Mfg entropie
ich weiß schon das, dass Problem nicht wirklich trivial ist. Jedoch möchte ich nicht nur eine Datei hoch laden, sondern parallel Daten übertragen. Somit scheiden die meisten plugins aus. Ich möchte jedoch auch keine iframes nutzen.
Hallo,
Hi.
Wenn du es browserübergreifend (richtig) machen willst wirst du vermutlich wesentlich mehr zu tun haben als du denkst. Es geht. Ich würde an deiner stelle eine blick in die sourcen von bsp. fineuploader sehen, oder es einfach benutzen. :)
Mfg entropie
ich weiß schon das, dass Problem nicht wirklich trivial ist. Jedoch möchte ich nicht nur eine Datei hoch laden, sondern parallel Daten übertragen. Somit scheiden die meisten plugins aus. Ich möchte jedoch auch keine iframes nutzen.
Das ist mit diesem plugin möglich!
IIRC kannst du gar nicht auf iframes verzichten wenn du IE support anbieten willst. Da kann ich mich aber gerade täuschen. Anyways, jede deiner fragen wird von der o.G. source beantwortet.
Mfg entropie
Hallo,
schau dir mal diese Seite an.
Interessant wird's an der Stelle:
var formData = new FormData();
for (var i = 0; i < files.length; i++) {
formData.append('file', files[i]);
}
An formData kannst Du selbstverständlich auch andere "Dinge" anhängen:
formdata.append("nickname", "Foooobar");
formdata.append("website", "http://hacks.mozilla.org");
Viele Grüße
Siri
Danke für den Tip, so konnte ich es nun lösen:
var form = 'form';
var fields = ['input[type=text]','input[type=hidden]','textarea','select','checkbox'];
var data = new FormData();
$.each(fields,function(index,key){
$(form+' '+key).each(function(){
data.append($(this).attr('name'),$(this).val());
})
})
$(form+' input[type=file]').each(function(){
data.append($(this).attr('name'),this.files[0]);
})
Damit kann ich dies nun für beliebige Formulare nutzen.
Gruß xpapa