2016-05-27 20 views
-2

Ich versuche eine Ajax-Anfrage zu machen, um ein Bild hochzuladen. Mein Problem ist, wenn ich die FormData erstelle. Meine Konsole sagt "dataForm ist kein Konstruktor".FormData ist kein Konstruktor

Wie kann ich das lösen?

hier ist mein Skript

$("#new-broadcast-image-static").on("change", function(formData) { 
       var formData = new formData(); 

       // line that console point the error // 
       var file = $("#new-broadcast-image-static")[0].files[0]; 
       formData.set("image", file); 

       $.ajax({ 
        url: apiUrl + "image/upload", 
        type: 'POST', 
        data: formData, 
        async: false, 
        cache: false, 
        contentType: false, 
        xhrFields: { 
         withCredentials: true 
        }, 
        success: function(data) { 
         hashNewBroadcastImage = data.data.identifier; 
         $("#hash-new-broadcast-image-static").val(hashNewBroadcastImage); 
        } 
       }); 
      }); 
+0

Was denken Sie, der Rückruf für '.on()' gibt? Die [Dokumentation] (http://api.jquery.com/on/) sagt, sie übergibt das Ereignis als ersten Parameter. Es kann nicht ausgeführt werden. – 4castle

+0

Welchen Browser benutzen Sie? Überprüfen Sie diesen Link für kompatible Browser https://developer.mozilla.org/en-US/docs/Web/API/FormData – Kld

+0

Ich stimme als off-topic zu schließen, weil dies nur ein Tippfehler war. – 4castle

Antwort

3

es Capitalize: var formData = new FormData();

Aber was willst du sowieso acomplish? Sie sind reasigning eine Variable, die Sie als Parameter erhalten werden:

$("#new-broadcast-image-static").on("change", function(formData) { 
     var formData = new formData(); 

Sie wahrscheinlich etwas ändern wollen wie

$("#new-broadcast-image-static").on("change", function(e) { 
     var formData = new FormData(); 
0

Dieser Code macht buchstäblich keinen Sinn:

// function will create a variable called formData 
function(formData) { 
    // Create a new variable? And attempt to create an object with the 
    // same name as a varaible? WTF 
    var formData = new formData(); 
+0

Es macht Sinn für mich. Es hängt nur davon ab, welchen Parameter Sie an die Funktion übergeben. Wenn der Parameter eine Funktion wäre, wäre er vollkommen gültig. – 4castle

+0

https://jsfiddle.net/hxxnt1ud/ Verwendung von neuen auf eine Funktion gibt seltsame Ergebnisse. Ich glaube nicht, dass er das will. –

+0

Sie haben Recht, es ist nicht das, was sie wollen. Um herauszufinden, was es tut, versuchen Sie JavaScript-Konstruktoren nachzuschlagen. Sie geben immer Objekte zurück, die aus den von Ihnen festgelegten Variablen bestehen. Es ignoriert die Rückgabeanweisung. – 4castle

1

nicht völlig sicher, aber ich denke, Sie haben einen Großbuchstaben Fehler, Sie haben FormData() statt FormData()

schreiben

Der richtige Weg:

var formData = new FormData(); 
+0

Sie verarschen mich ...> _ vbotio

1

in Ihrem gesamten Code, wenn Sie Wert auf Formdata wie unter

FormData={"PersonID":1,"PersonName":"Test"}; 

zuweisen und wenn Sie diese verwenden, wie

var a = new FormData(); 

Dann wird es Fehler wie "FormData ist kein Konstruktor, da es bereits als Objekt deklariert ist".

Verwandte Themen