Данные в FormData не видны в консоли

139
23 июня 2019, 21:20

Вопрос из любопытства, почему данные в экземпляре FormData не видны при выводе в консоль, но при этом они видны во вкладке Network? Вывод в консоль делал непосредственно перед отправкой, объект один и тот же.

// выдержки из кода компонента Vue
const formData = new FormData();
Object.keys(this.data).forEach(key => {
  formData.append(key, this.data[key]);
})
console.log(formData)
//метод отправляющий post-запрос на сервер.
this.$API.post(path, formData, {'Content-Type': 'multipart/form-data'}).then()...
//под капотом используется axios
//.. выдержка из конструктора
post(path, payload, headers = { 'Content-Type': 'application/json' }) {
  return this.service.request({
    headers,
    method: 'POST',
    url: path,
    responseType: 'json',
    data: payload,
  });
}
Answer 1

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

В дополнение к этому, вывод console.log, так же не специфицирован, что еще добавляет возможности различного вывода в различных браузерах.

Что можно увидеть в консоли chrome?

  1. прототип установлен в FormData
  2. в прототипе присутствуют все методы описанные в спецификации.

остальной вывод производится на усмотрение конкретного браузера.

Если посмотреть в спецификации, у каждого объекта FormData есть ассоциированный список со значениями.

Так как он ассоциированный, то может не являться частью объекта, следовательно текущий вывод вполне оправдан.

Answer 2

Для вывода содержимого у FormData есть методы

const form = document.forms['example-form']; 
 
 
const exampleInput = document.querySelector('[name="example"]'); 
 
exampleInput.addEventListener('change', changeHandler); 
 
function changeHandler() { 
  const formData = new FormData(form); 
  for (key of formData.keys()) { 
    console.log(`${key}: ${formData.get(key)}`); 
  } 
}
<form id="example-form"> 
  <input name="example"> 
</form>

READ ALSO
Как перекодировать массив в Node.JS из CP1251 в UTF8?

Как перекодировать массив в Node.JS из CP1251 в UTF8?

Есть массив (точнее объект), как изменить кодировку его элементов из CP1251 в UTF8?

158
Перезагрузка ресурсов на iOS

Перезагрузка ресурсов на iOS

Столкнулся с проблемой повторной загрузки ресурсов в iOS (iPhone 7)Разрабатываю большое SPA приложение, с предзагрузкой ресурсов(изобр

148
JS Как отформатировать 12345.00 в 123.45 (до сотых)? [закрыт]

JS Как отформатировать 12345.00 в 123.45 (до сотых)? [закрыт]

Простите за нубство, не знал, как загуглить, гугл выдаёт только "сокращение до сотых из 12345000123 до 12345

123
Дополненная реальность на сайте

Дополненная реальность на сайте

Хочу поинтересоватьсяМожно ли сделать на сайте (средствами js / сss), когда открывается камера, вставить объект и чтоб он завис в пространстве

173