2016-05-27 2 views
-2

Я пытаюсь сделать запрос ajax для загрузки изображения. Моя проблема в том, когда я создаю форму FormData. Моя консоль говорит, что «dataForm не является конструктором».FormData не является конструктором

Как я могу это решить?

здесь мой сценарий

$("#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

Как вы думаете, что вызывает обратный вызов для '.on()'? В [documentation] (http://api.jquery.com/on/) говорится, что он передает событие в качестве первого параметра. Это не то, что вы можете выполнить. – 4castle

+0

Какой браузер вы используете? проверьте эту ссылку для совместимых браузеров https://developer.mozilla.org/en-US/docs/Web/API/FormData – Kld

+0

Я голосую, чтобы закрыть как не по теме, потому что это была просто опечатка. – 4castle

ответ

3

капитализировать его: var formData = new FormData();

Но что вы пытаетесь acomplish так или иначе? Вы reasigning переменную вы получаете в качестве параметра:

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

Вы, вероятно, хотите, чтобы изменить его на что-то вроде

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

Этот код буквально не имеет смысла:

// 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

Это имеет смысл для меня. Это просто зависит от параметра, который вы передаете функции. Если бы параметр был функцией, это было бы совершенно справедливо. – 4castle

+0

https://jsfiddle.net/hxxnt1ud/ Использование новой функции дает странные результаты. Я не думаю, что он этого хочет. –

+0

Вы правы, это не то, что они хотят. Чтобы узнать, что он делает, попробуйте поискать JavaScript-конструкторы. Они всегда возвращают объекты, состоящие из переменных, которые вы устанавливаете внутри. Он игнорирует оператор return. – 4castle

1

Не полностью уверенный об этом, но я думаю, что у вас ошибка с большой буквы, вы пишите formData() вместо FormData()

Правильный путь:

var formData = new FormData(); 
+0

вы издеваетесь надо мной ...> _ <работал ... grrr tks! – vbotio

1

В целом ваш код, если вы присваиваете значение FormData, как показано ниже

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

и если вы используете как этот

var a = new FormData(); 

Тогда это будет throw error like "FormData не является конструктором, поскольку он уже объявлен как объект".

Смежные вопросы