• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Problem mit FormData() und jQuery

mikdoe

Moderator
HTML:
<form enctype="multipart/form-data" id="fileuploadform">
  <input type="hidden" name="act" value="upload">
  <input type="file" name="upload">
  <input id="fileuploadbutton" type="button" value="Upload">
</form>
var formData = new FormData($('form')[0]); funktioniert aber
var formData = new FormData($('#fileuploadform')); funktioniert nicht, es werden keine Daten an das Serverscript übertragen.
Warum funktioniert die Adressierung mit ID nicht? Was ist falsch geschrieben?
 
Zuletzt bearbeitet:
Das sind zwei unterschieldiche Sachen, die du da verwendest:
Code:
    var f1 = $('form')[0];
    var f2 = $('#fileuploadform');
    alert(f1 + '='+ f2);
 
HTML:
<form enctype="multipart/form-data" id="fileuploadform">
  <input type="hidden" name="act" value="upload">
  <input type="file" name="upload">
  <input id="fileuploadbutton" type="button" value="Upload">
</form>
var formData = new FormData($('form')[0]); funktioniert aber
var formData = new FormData($('#fileuploadform')); funktioniert nicht, es werden keine Daten an das Serverscript übertragen.
Warum funktioniert die Adressierung mit ID nicht? Was ist falsch geschrieben?

FormData ist Teil von HTML5, oder?
 
Fängst du schon wieder an, zu zeigen, warum es nicht geht und die Lösung zu verschweigen?
Das nervt unendlich.
Dein ständiges gejammer auch.
Sag mir doch bitte einfach, wie man es richtig schreibt, das ist doch einfach nur meine Frage.
Das weiß ich nicht, da ich die Funktion FormaData nicht kenne und ich daher nciht weiß was du ihr übergeben willst.

Und FormData() hatte ich schon als HTML5 Element verstanden: https://developer.mozilla.org/en-US/docs/Web/API/FormData
Falsch?
Diese Funktkion war mir nicht bekannt und selbst wenn sollte dir mit meiner Hilfestellung es ein leichtes sein dein Problem zu lösen. Ich verstehe nicht, warum du von uns erwartest, das wir Wissen was du weißt und nicht weißt und dann immer die für dich beste Antwort erwartest?
Das ist ein Forum zur Selbsthilfe und ein bisschen Transferleistung sollte man auch erwarten können.
 
Mit jQuery bekommt man nicht die "echten" DOM-Nodes zurückgeliefert, sondern ein Wrapperobjekt.
Wenn du per ID direkt auf eine DOM zugreifen willst und das Wrapperobjekt nicht brauchen kannst (so wie hier) solltest du besser mit document.getElementById() arbeiten.

Wenn du trotzdem über jQuery gehen willst/muss, kannst du über
Code:
var node = $("#id")[0];
direkt auf die Node zugreifen - genau so, wie du es bei dem anderen Selektor gemacht hast.

PS: Ich würde FormData jetzt nicht zu HTML5 zählen, da es wo anders spezifiziert ist.
PPS: @mikdoe & @ein schlauer: könnt ihr euch mal beide bitte mäßigen.
 
Was ganz leicht nachvollziehbar gewesen wäre:

Code:
    var f1 = $('form')[0];
    var f2 = $('#fileuploadform');
    alert(f1 + '='+ f2);
// ==> [object HTMLFormElement]=[object Object]

und das ganze wird sogar noch einfacher, die Fehlerkonsole zeigt ebenfalls einen Fehler an:
Code:
Zeitstempel: 03.11.2013 14:41:52
Fehler: TypeError: Argument 1 of FormData.constructor does not implement interface HTMLFormElement.
Quelldatei: http://localhost/javascript/tmp.html#
Zeile: 26

Wieso soll ich mich mäßigen?
Ich kann doch erwarten, dass wenigstens ein Moderator sich bemüht bevor er fragt. Etwas google, etwas Doku lesen und die Antworten versuchen nachzuvollziehen, ist doch das Mindestmaß das wir hier von Fragenden erwarten, das ist was vermisse ich bei Mikdoe
 
Wieso soll ich mich mäßigen?
Ich kann doch erwarten, dass wenigstens ein Moderator sich bemüht bevor er fragt. Etwas google, etwas Doku lesen und die Antworten versuchen nachzuvollziehen, ist doch das Mindestmaß das wir hier von Fragenden erwarten, das ist was vermisse ich bei Mikdoe

Bitte versteh mich nicht falsch, ich möchte nicht beurteilen, wer von euch im Recht ist. Das, was ich auch wie kkapsner meinte, war, dass eben nicht jeder Thread, den mikdoe erstellt und auf den du antwortet, eskalieren sollte. Das nervt auch die anderen! ;)
 
Wegen mir müßte er auch nicht eskalieren, ich gebe mir Mühe die Fragen zu beantworten und werde jedesmal angegriffen. Das ist was nervt.
 
Was mich tierisch aufregt ist, dass schlauer mich ständig versucht zu erziehen, indem er mir - obwohl er sie weiß - bewußt die Antwort vorenthält und mit scheinheiligen Fragen und Darstellungen seine Annahme kundtut, dass ich mir vorher keinerlei Mühe gegeben habe, selbst eine Lösung zu finden:
Ich kann doch erwarten, dass wenigstens ein Moderator sich bemüht bevor er fragt. Etwas google, etwas Doku lesen und die Antworten versuchen nachzuvollziehen, ist doch das Mindestmaß das wir hier von Fragenden erwarten, das ist was vermisse ich bei Mikdoe
Das ist das was ich meine.
Was soll das? Erstens kannst du garnicht wissen, was ich vor der Fragestellung schon alles recherchiert habe und zweitens geht es dich garnichts an!
Wenn du antworten möchtest, tu das aber lass jeden das machen, was er möchte. Und einen Zusammenhang zu meiner Moderatoren Tätigkeit sehe ich da auch nicht. Man muss kein Tausendsassa sein, um hier ab und zu Spam zu löschen, Code Tags zu setzen und Threads zu verschieben. Was soll die Anspielung? Oder gehörst du auch zu den Menschen, die Moderator mit Alleswisser verwechseln?

Und wenn man ihn dann darauf anspricht kommt "ich weiß doch nicht, was du damit machen willst":
Das weiß ich nicht, da ich die Funktion FormaData nicht kenne und ich daher nciht weiß was du ihr übergeben willst.
Was für ein Quatsch!
Erstens habe ich mit einem funktionierenden Beispiel gezeigt, was ich übergeben möchte. Das möchte ich nur nicht als Array adressieren sondern mit einer ID und zweitens konnte Korbinian das doch auch beantworten. Es ist doch völlig egal, was man mit dem Ergebnis anstellt, danach war doch garnicht gefragt! Es ging lediglich darum, wie man anders an das selbe Ergebnis kommt. Dafür muss man nicht scheinheilig danach fragen, was das für eine Funktion ist, die das Ergebnis bekommt. Was der Herr übrigens auch mal selbst hätte googeln können, soviel zum Thema!!

Sorry, dass ich mich darüber aufrege aber das sind Unverschämtheiten Sondergleichen. Ich fühle mich dadurch angegriffen. Und das hat nichts mit Ungeduld zu tun. Schlauer macht das inzwischen systematisch bei allen Fragen von mir.
Und es ist das selbe wie in dem anderne großen eskalierten Thread. Da fing er auch an, mir zu unterstellen, ich hätte nichts recherchiert und musste später klein beigeben, weil ich ihm das Gegenteil sogar beweisen konnte.

@schlauer: Ich verbitte mir diese Unverschämtheiten hiermit ganz ausdrücklich! Das ist meine letzte Ansage dazu. Wenn du diese gezielten Provokationen nicht sein läßt werde ich mir etwas überlegen. Ich fordere dich auf, hier öffentlich im Forum auf Fragen nur noch sachliche Antworten zu geben und deine Provokationen sein zu lassen! Und wenn du ein Problem damit hast, dass ich Moderator bin, dann trage das mit mir per PN aus oder komm mich besuchen. Aber lass diese öffentlichen Anfeindungen sein!

Ich hätte das hier jetzt per PN gemacht, wollte aber gerade noch den Mitlesenden zeigen, wo mein Problem liegt, weil ja schon Kommentare dazu kamen. Und vor allem wollte ich klar machen, dass bei diesem Problem ausnahmsweise nicht ich der Provokateur bin. Ich hoffe, man kann es nachvollziehen. Ich werde die anderen ab sofort damit nicht mehr öffentlich belasten. Aber gefallen lassen werde ich mir das auch nicht weiter.
 
Zuletzt bearbeitet:
So, jetzt nochmal zur Sache zurück.

Code:
var node = $("#id")[0];
direkt auf die Node zugreifen
Klappt, danke dir.
So ganz verstehe ich das aber noch nicht, warum das ein Unterschied ist. Ich war drauf und dran, document.getElementById() zu verwenden aber dann habe ich mir gedacht, jQuery ist doch für Selectoren geradezu gemacht. Aber man muss sie scheinbar etwas tiefergehend verstehen, was ich noch nicht tue. So hat mir die Antwort auf die Frage gezeigt, dass ich an der Stelle noch viel lernen muss.

PS: Ich würde FormData jetzt nicht zu HTML5 zählen, da es wo anders spezifiziert ist.
Wozu gehört es denn?
Bei mir läuft das in allen aktuellen Browsern.
Eher Ajax 2.0, oder?

und das ganze wird sogar noch einfacher, die Fehlerkonsole zeigt ebenfalls einen Fehler an:
Code:
Zeitstempel: 03.11.2013 14:41:52
Fehler: TypeError: Argument 1 of FormData.constructor does not implement interface HTMLFormElement.
Quelldatei: http://localhost/javascript/tmp.html#
Zeile: 26
In welchem Browser soll das sein? Und wie sieht der Code genau aus?
 
Was mich tierisch aufregt ist, dass schlauer mich ständig versucht zu erziehen, indem er mir - obwohl er sie weiß - bewußt die Antwort vorenthält und mit scheinheiligen Fragen und Darstellungen seine Annahme kundtut, dass ich mir vorher keinerlei Mühe gegeben habe, selbst eine Lösung zu finden:
Das ist mein Eindruck wenn du einfachste Dinge - wie hier die Meldung in der Fehlerkonsole nicht beachtest.

Was für ein Quatsch!
Erstens habe ich mit einem funktionierenden Beispiel gezeigt, was ich übergeben möchte. Das möchte ich nur nicht als Array adressieren sondern mit einer ID und zweitens konnte Korbinian das doch auch beantworten. Es ist doch völlig egal, was man mit dem Ergebnis anstellt, danach war doch garnicht gefragt! Es ging lediglich darum, wie man anders an das selbe Ergebnis kommt. Dafür muss man nicht scheinheilig danach fragen, was das für eine Funktion ist, die das Ergebnis bekommt. Was der Herr übrigens auch mal selbst hätte googeln können, soviel zum Thema!!
Ich habe nicht Scheinheilig gefragt! Mir war die Funktion unbekannt! Es ist aber auch egal, da ich dir gesagt habe, dass du da zwei verschiedene Dinge übergibst. Da ich die Funktion nicht kannte, kann ich nicht Wissen was richtig ist, aber du hättest es leicht rausfinden können.
Inwiefern ich hätte goolge sollen bleibt dein Geheimnis, wenn du eine Funktion zeigst gehe ich davon aus, dass sei von dir ist und ich glauben niht, dass man per google alle Funktionen die du jemals geschrieben hast findet.

Sorry, dass ich mich darüber aufrege aber das sind Unverschämtheiten Sondergleichen.
Stimmt, aber von deiner Seite. Du unterstellst mir doch ständig irgendwelche Dinge

Ich fordere dich auf, hier öffentlich im Forum auf Fragen nur noch sachliche Antworten zu geben und deine Provokationen sein zu lassen!
Genau das tue ich, wenn du ebenso sachlich antworten würdest, gäbe es auch keinerlei Problem.
 
Zuletzt bearbeitet:
In der Fehlerkonsole, nicht Firebug.

EDIT: Wobei ich die Meldung auch im Firebug angezeigt bekommen. Ich kann aber mit FB nicht richtig umgehen, wo ist da ein Reiter Fehler?

EDIT 2: Ach Konsole heißt das. Du musst im Firebug dort auch die JS Fehler aktiveren - kann es sein, dass das bei dir nicht ist?
 
Zuletzt bearbeitet:
In der Fehlerkonsole, nicht Firebug.
Die ist bei mir noch voller als Firebug durch das ganze jQuery Zeugs.
Ich kann das nicht nachvollziehen. Bei mir bringt der Code (im Header noch jQuery einbinden) keinen Fehler:
HTML:
<p><b>Ajax File Upload:</b></p>
<form enctype="multipart/form-data" id="fileuploadform">
	<input type="hidden" name="act" value="upload">
    <input type="file" name="upload">
    <input id="fileuploadbutton" type="button" value="Upload">
</form>
<progress></progress>
<div id="fileuploadergebnis"></div>
<script>
$('#fileuploadbutton').click(function(){
    var formData = new FormData($("#fileuploadform")[0]);
    $.ajax({
        url: 'test_jquery.pl',  //Server script to process data
        type: 'POST',
        xhr: function() {  // Custom XMLHttpRequest
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // Check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
//        beforeSend: beforeSendHandler,
        success: function(data) { $('#fileuploadergebnis').text(data); },
        error: function(jqXHR,textStatus,errorThrown) { $('#fileuploadergebnis').text('FEHLER '+textStatus+' '+errorThrown+'!'); },
        // Form data
        data: formData,
        //Options to tell jQuery not to process data or worry about content-type.
        cache: false,
        contentType: false,
        processData: false
    });
});
function progressHandlingFunction(e){
    if(e.lengthComputable){
        $('progress').attr({value:e.loaded,max:e.total});
    }
}
</script>
Firebug:
ff_firebug.jpg

Firefox 24.0 auf Win7 mit jQuery v1.7.1, Firebug 1.12.4
 
Zuletzt bearbeitet:
Zurück
Oben