Сериализация форм — процесс преобразования данных HTML-формы в
строку, пригодную для отправки на сервер в формате
application/x-www-form-urlencoded. jQuery предоставляет
удобные методы для выполнения этой задачи, упрощая работу с данными форм
и интеграцию с AJAX.
.serialize()Метод .serialize() возвращает строку с параметрами
формы, где каждый элемент формы представлен в виде
ключ=значение, а пары разделены символом
&. Этот метод охватывает только элементы формы, которые
имеют атрибут name и не отключены
(disabled).
Синтаксис:
$(селектор_формы).serialize();
Пример:
<form id="userForm">
<input type="text" name="username" value="ivan">
<input type="email" name="email" value="ivan@example.com">
<input type="checkbox" name="subscribe" checked>
</form>
<script>
var data = $('#userForm').serialize();
console.log(data); // username=ivan&email=ivan%40example.com&subscribe=on
</script>
Особенности метода .serialize():
disabled.name.<select multiple> и
checkbox) формирует несколько пар
ключ=значение.encodeURIComponent)..serializeArray()Метод .serializeArray() возвращает массив объектов с
полями name и value. Он полезен для
программной обработки данных перед отправкой или при необходимости
дополнительной валидации.
Синтаксис:
$(селектор_формы).serializeArray();
Пример:
var formData = $('#userForm').serializeArray();
console.log(formData);
/*
[
{name: "username", value: "ivan"},
{name: "email", value: "ivan@example.com"},
{name: "subscribe", value: "on"}
]
*/
Особенности метода .serializeArray():
Часто сериализация форм используется совместно с AJAX для отправки данных на сервер без перезагрузки страницы.
Пример отправки с использованием
.serialize():
$('#userForm').on('submit', function(event) {
event.preventDefault(); // предотвращает стандартную отправку формы
$.ajax({
url: '/submit',
method: 'POST',
data: $(this).serialize(),
success: function(response) {
console.log('Данные отправлены успешно', response);
}
});
});
Пример отправки с использованием
.serializeArray():
$('#userForm').on('submit', function(event) {
event.preventDefault();
var dataArray = $(this).serializeArray();
var dataObject = {};
$.each(dataArray, function(_, field) {
dataObject[field.name] = field.value;
});
$.ajax({
url: '/submit',
method: 'POST',
data: JSON.stringify(dataObject),
contentType: 'application/json',
success: function(response) {
console.log('Данные отправлены в формате JSON', response);
}
});
});
Использование .serializeArray() позволяет преобразовать
данные в JSON, что особенно удобно для современных REST API.
Если форма содержит динамически добавленные элементы
(append, clone и т.д.), методы сериализации
автоматически учитывают их, если они имеют атрибут name и
не отключены.
Пример:
$('#addField').on('click', function() {
$('#userForm').append('<input type="text" name="extraField" value="newValue">');
});
$('#submitForm').on('click', function() {
console.log($('#userForm').serialize());
});
Метод .serialize() вернёт все новые поля, включая
динамически добавленные.
.serialize() и .serializeArray()| Свойство | .serialize() |
.serializeArray() |
|---|---|---|
| Формат | Строка URL-кодированная | Массив объектов {name, value} |
| Использование | Простая отправка через AJAX | Манипуляция данными перед отправкой |
| Поддержка динамики | Да | Да |
| Простота преобразования в JSON | Требует дополнительного парсинга | Прямое преобразование |
name.disabled не включаются в сериализацию..serializeArray() предпочтительно при
необходимости изменения данных перед отправкой.Методы сериализации форм в jQuery предоставляют мощный и удобный инструмент для работы с данными форм. Они позволяют легко интегрировать формы с AJAX-запросами и создавать динамические веб-приложения без лишних сложностей.