johny7: File-Upload mit jQuery AJAX

Moin allerseits,

in meinem Projekt verarbeite ich die Formulare per AJAX. Dazu durchsuche ich das Formular nach input-Elementen und hänge sie aneinander in eine Variable input. Dann rufe ich die AJAX-Funktion auf.

  
$.ajax({  
   url: runscript,  
   type: runmethod,  
   data: input,	  
   });	  

In runscript und runmethod ist der Pfad zum Script und die Methode gespeichert.
Da bei mir in "input" nur der Inhalt des Attributs value des jeweiligen input-Feldes gespeichert ist, wird logischerweise nur der Dateiname aber nicht ihr Inhalt gesendet. Wie kann ich nun anstelle des Dateinamens den Dateiinhalt senden?

Falls es wichtig für die Hilfestellung ist: Ich hänge die Daten folgendermaßen aneinander (etwas vereinfacht, normalerweise werden checkboxen besonders behandelt).

  
var input = "";  
form.find("input").each(  
function ()  
{  
	input += "&" + encodeURI($(this).attr("name")) + "=" + encodeURI($(this).attr("value"));  
						  
}  
);  

Grüße, JN

--
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de
  1. Wie kann ich nun anstelle des Dateinamens den Dateiinhalt senden?

    Nutze die "dreckige" iframe-Variante bei der du einfach den Inhalt an ein versteckes iframe postest und nur so tust als wäre es Ajax - das ist momentan Best Practice.

    http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html
    http://www.webtoolkit.info/ajax-file-upload.html

  2. hallo johny7,

    Wie kann ich nun anstelle des Dateinamens den Dateiinhalt senden?

    mit Ajax lässt sich meines Wissens keine Datei hochladen. Hatte ich vor kurzem auch gesucht. Ein Workaround mit einem (nicht schlagen ;)) nicht sichtbaren Frame lässt aber zumindest den Eindruck erscheinen, es dynamisch ohne Reload zu machen.

    grüße,
    henman

    --
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
    sh:( fo:| ch:? rl:° br:> n4:? ie:% mo:) va:| de:] zu:) fl:{ ss:| ls:[ js:|
    1. mit Ajax lässt sich meines Wissens keine Datei hochladen. Hatte ich vor kurzem auch gesucht. Ein Workaround mit einem (nicht schlagen ;)) nicht sichtbaren Frame lässt aber zumindest den Eindruck erscheinen, es dynamisch ohne Reload zu machen.

      Richtig, denn Ajax ist, wenn es ein animiertes Kreisel-GIF gibt - ungleich ob dahinter tatsächlich nur das notwendigste übertragen wird oder nicht.

  3. Es gibt auch ein nettes jQuery Plugin, das den Upload sehr AJAX-like macht, allerdings mit Flash (dafür mit mächtiger Mehrfach-Auswahl, Fortschrittsbalken etc.): Uploadify
    Gruß,
    Andreas