FormData пусто

  • Автор темы Живой Человек
  • 51
  • Обновлено
  • 15, May 2024
  • #1
Привет, ребята, Раньше этот сценарий хорошо работал у меня, но теперь он заставляет меня сильно чесать голову.

Когда я проверяю значение с помощью console.log(), он показывает пустой объект как FormData {}. Вот сценарий:
 name=John+Doe
Код (разметка): Должно быть что-то вроде:
  <!DOCTYPE html><html><head> <title>Test document</title> </head><body> <form id="from" method="POST" action="test.html"> <label>Your Name</label> : <input type="text" name="name" id="name" required /><br> <input type="submit" value="Submit" /> </form> <div id="test"></div> <script> var doc = document , from = doc.getElementById("from") , test = doc.getElementById("test"); from.addEventListener('submit', function(e) { e.preventDefault(); sendData(); }); function sendData() { let data = new FormData(form); console.log(data); // FormData {} let xhr = new XMLHttpRequest(); xhr.open('POST', '/www/test.html', true); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { test.insertAdjacentHTML('beforeend', xhr.responseText); } }; xhr.send(data); } </script> </body></html> 
Код (разметка): Заранее спасибо за помощь,

Живой Человек


Рег
12 Mar, 2014

Тем
1

Постов
3

Баллов
13
  • 18, May 2024
  • #2
Да, это так, и это вызывает загрузку страницы, что мне не нравится.

Я не хочу, чтобы мои клиенты тратили свое драгоценное время на ожидание загрузки этой страницы только для того, чтобы сказать им, что теперь они готовы к работе. Ajax отлично работает с PHP.

Однако он отправляет нечитаемый объект на сервер node.js, который мне приходится захватывать данные из формы и сериализовать их на стороне клиента перед отправкой.

Он все равно должен работать с отключенным JavaScript.

Зачем добавлять этот сценарий? Тогда я виню платформу, которую выбираю.

Как вы думаете, мне следует сделать это на стороне сервера?

Кстати, лично я никогда не заполняю форму второй раз, если ввел неверные данные, и мне приходится переходить на другую страницу для повторного заполнения данных, уже в правильном формате именно на этот раз.
 

Миша Дейниченко


Рег
20 Jun, 2011

Тем
0

Постов
3

Баллов
3
  • 21, May 2024
  • #3
Это для отправки данных JSON, например:
 name=Richard&surname=Roe&phone=1234567890&device=Samsung%20Galaxy
Код (разметка): Все, что я делаю, — это сохраняю данные и сообщаю отправителю, что данные записаны.

Если вы не используете ajax, он обновит страницу или перейдет куда-нибудь еще, прежде чем вернуться. Какой лучший способ вы предлагаете? PS: в моем случае это был сервер node.js. Требуются только данные в формате JSON.
 

Anton199


Рег
24 Jan, 2015

Тем
0

Постов
3

Баллов
3
  • 07, Jun 2024
  • #4
Что ж, я думаю, что этот пост ajax дает вам лучший контроль над транзакциями данных без необходимости перенаправления. Я вижу много веб-сайтов, которые перенаправляют медленно. Есть ли другие лучшие способы сделать это?
 

sasho


Рег
05 Nov, 2010

Тем
1

Постов
3

Баллов
13
  • 12, Jun 2024
  • #5
Чтобы лучше получить данные из формы и сериализовать их, используйте эту функцию: https://vanillajstoolkit.com/helpers/serialize/

Использование:
 
var form = document.querySelector('#my-form');
var formData = serialize(form);
console.log(formData);
Код (разметка):
 

Get-Click


Рег
29 Mar, 2013

Тем
0

Постов
2

Баллов
2
  • 12, Jun 2024
  • #6
Не обновить, а загрузить новую страницу.

что в этом такого?!? Это должно быть вашим базовым поведением ПРЕЖДЕ ЧЕМ вы даже ДУМАЕТЕ о том, чтобы использовать JavaScript на стороне клиента, поскольку создание скриптов для постепенной деградации — это один из многих флажков, которые вам нужно установить для обеспечения доступности.

Неписаное правило JavaScript — Если вы не можете создать полностью работающую клиентскую страницу без JavaScript ПЕРВЫЙ, вам, вероятно, нечего добавлять в него сценарии! Напишите свою форму, чтобы она работала нормально, ЗАТЕМ и только потом улучшайте его с помощью JavaScript.

Нет ничего плохого в наложении сценариев поверх уже работающей формы, если вы один из тех людей с раздутыми страницами, которые, по вашему мнению, помогут избежать «злой загрузки страниц»… но на самом деле, если это проблема, то, скорее всего, это действительно так.

означает, что HTML - мусор. О нет, это не злобная загрузка страницы, когда кто-то отправляет форму... БАРФ.
 

kvk-39


Рег
12 Sep, 2012

Тем
2

Постов
3

Баллов
23
Тем
49554
Комментарии
57426
Опыт
552966

Интересно