Сериализация форм является одной из базовых операций при работе с веб-формами. Она позволяет преобразовать данные, введённые пользователем, в структурированный формат, удобный для отправки на сервер или дальнейшей обработки в JavaScript. Библиотека Umbrella JS предоставляет удобные методы для работы с формами, минимизируя необходимость написания объёмного кода и обеспечивая чистый и лаконичный синтаксис.
В Umbrella JS для работы с формами используется метод
.serialize(). Он преобразует все поля формы в объект, где
ключами являются имена полей (name), а значениями —
соответствующие значения (value).
Пример:
u('form').on('submit', function(e) {
e.preventDefault();
const formData = u(this).serialize();
console.log(formData);
});
Особенности метода .serialize():
<input>,
<textarea>, <select>.name собираются в массив.name.Пример результата:
{
username: "ivan",
password: "123456",
hobbies: ["reading", "coding"]
}
Для отправки данных через GET или POST удобно преобразовать объект
формы в строку query. Umbrella JS предоставляет метод
.serializeQuery():
const queryString = u('form').serializeQuery();
console.log(queryString);
Пример вывода:
username=ivan&password=123456&hobbies=reading&hobbies=coding
Ключевые моменты:
encodeURIComponent, что исключает ошибки при передаче
специальных символов.Umbrella JS корректно обрабатывает разные типы input:
.value.checked).Пример:
<form id="testForm">
<input type="text" name="username" value="alice">
<input type="checkbox" name="subscribe" checked>
<select name="country">
<option value="us" selected>USA</option>
<option value="ca">Canada</option>
</select>
</form>
const data = u('#testForm').serialize();
console.log(data);
// { username: "alice", subscribe: "on", country: "us" }
Для современных веб-приложений часто требуется отправка данных в
формате JSON. Umbrella JS позволяет сначала получить объект через
.serialize(), а затем преобразовать его с помощью
JSON.stringify():
const jsonData = JSON.stringify(u('form').serialize());
console.log(jsonData);
Пример результата:
{"username":"alice","subscribe":"on","country":"us"}
Методы сериализации в Umbrella JS автоматически учитывают динамически
добавленные элементы. Если в DOM добавляется новый input после загрузки
страницы, .serialize() включит его при следующем
вызове:
u('form').append('<input type="text" name="email" value="test@example.com">');
const data = u('form').serialize();
console.log(data);
// { username: "alice", subscribe: "on", country: "us", email: "test@example.com" }
name игнорируются.<input type="file">) не сериализуются. Для
работы с файлами требуется FormData.checked и radio, не выбранные, не
включаются в результат.Сериализация форм особенно полезна для:
Пример отправки через fetch:
u('form').on('submit', function(e) {
e.preventDefault();
const data = u(this).serialize();
fetch('/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
})
.then(res => res.json())
.then(console.log);
});
С помощью Umbrella JS сериализация форм становится предельно простой, понятной и безопасной операцией, позволяя работать с любыми типами полей и обеспечивая прямую интеграцию с современными методами обработки данных.