Почему formData не является конструктором?

Я работаю с редактором TinyMCE, и я следил за их демонстрацией и другим руководством по «T». Моя цель - использовать загрузчик изображений, чтобы пользователь мог загружать изображения на сервер. Однако, когда я использую программу загрузки изображений для выбора изображения, появляется сообщение об ошибке «formData не конструктор».

сообщение об ошибке

Вот код JavaScript:

images_upload_handler: function (blobInfo, success, failure) {
        var xhr, formData;
        xhr = new XMLHttpRequest();
        xhr.withCredentials = false;
        xhr.open('POST', 'upload.php');
        xhr.onload = function() {
          var json;
    
          if (xhr.status != 200) {
            failure('HTTP Error: ' + xhr.status);
            return;
          }
          json = JSON.parse(xhr.responseText);
    
          if (!json || typeof json.location != 'string') {
            failure('Invalid JSON: ' + xhr.responseText);
            return;
          }
          success(json.location);
        };
        formData = new FormData();
        formData.append('file', blobInfo.blob(), fileName(blobInfo));
        xhr.send(formData);
      }

Я выполнил инструкции здесь: https://www.tiny.cloud/docs/general-configuration-guide/upload-images/#imageuploaderoptions

Другой учебник, который я использовал (примерно то же самое), находится здесь: https://www.codexworld.com/tinymce-upload-image-to-server-using-php/comment-page-1/#comment-61677

formData или FormData? new FormData(); работает нормально.
Sebastian Simon 23.08.2018 17:03

Ошибка использует "formData", даже если я изменю свое имя переменной на другое. Я убедился, что набрал FormData (); Я не уверен, почему в ошибке используется строчная буква f.

Katie Scalf 23.08.2018 17:13

Какой браузер вы используете?

Michael Fromin 23.08.2018 17:24

Я использую Google Chrome и получаю указанную ошибку. Я только что попробовал Internet Explorer, и он говорит, что "fileName" не определено.

Katie Scalf 23.08.2018 17:35

Кажется, ваш код отлично работает для меня в этой скрипке TinyMCE: fiddle.tinymce.com/fzgaab Вы видите там ошибки? Я тестировал в Chrome (последний).

Michael Fromin 23.08.2018 17:48

Код по-прежнему у меня не работает. Теперь говорится, что имя_файла не определено

Katie Scalf 20.09.2018 20:56

Вы решили это, у меня такой же Uncaught (in promise) TypeError: FormData is not a constructor, потому что FormData не определен

dao hodac 27.04.2021 12:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
828
2

Ответы 2

Если вы изменили имя и по-прежнему получаете ту же ошибку, возможно, это кеширует старую страницу. Если вы используете chrome или fitefox, вы должны иметь возможность добавить точку останова в этой функции и перейти к точной строке с ошибкой.

С кодом все выглядит правильно

Вы не можете использовать имя переменной formData для инициализации конструктора FormData, имя переменной переопределяет определение конструктора. Так и должно быть:

var FormRequest= new FormData();

Но ваша переменная НЕ МОЖЕТ называться FormData. Я только что столкнулся с этим в приложении Vue.

Другие вопросы по теме