serializeArray()
93
посл. ред.
12.02.2017
Метод serializeArray() из выбранных элементов форм составляет массив объектов вида
. Формат массива подходит для перекодирования в JSON-строку. Пример результирующего массива:{name: 'имя', value: 'значение'}
[
{
name: 'field_1',
value: '1'
},
{
name: 'field_2',
value: '2'
},
{
name: 'field_3',
value: '3'
}
]
Данный метод можно использовать на jQuery-объектах, которые содержат элементы форм (<input>, <textarea> или <select>). Пример:
$('input, textarea, select').serializeArray();
Обычно, достаточно выбрать саму форму для сериализации:
$('form').serializeArray();
В этом случае jQuery составит массив из готовых для отправки элементов формы. Если выборка будет содержать и саму форму, и её дочерние элементы, тогда в результирующем массиве элементы будут продублированы.
Только готовые к отправке элементы форм подлежат сериализации.
- Пока кнопка
"submit"не нажата, она не подлежит сериализации. - Для сериализации элементы обязаны иметь атрибут
name. - Кнопки
"checkbox"и"radio"сериализуются, только если они выбраны в данный момент (checked). - Элементы типа
"file"не сериализуются.
Варианты использования
jQ_object.serializeArray() => Array- Возвращает массив объектов вида
из готовых для отправки элементов форм.{name: 'имя', value: 'значение'}
Примеры
<html>
<head>
<title>Ajax в jQuery</title>
<script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
<form>
<ul>
<li><input type="text" name="text_field" value="Имя"></li>
<li><input type="checkbox" name="checkbox_field" value="true" checked></li>
<li>
<input type="radio" name="radio_field" value="1">
<input type="radio" name="radio_field" value="2" checked>
</li>
<li>
<select name="select_field">
<option value="1">Первый</option>
<option value="2">Второй</option>
</select>
</li>
<li><textarea name="textarea_field">Сообщение...</textarea></li>
<li><input type="submit" value="serializeArray()"></li>
</ul>
</form>
<p></p>
</body>
</html>
<script>
$('form').on('submit', function (event) {
event.preventDefault();
var result = '';
var fields = $(this).serializeArray();
jQuery.each(fields, function(i, field) {
result += field.name + ' = ' + field.value + '<br>';
});
$('p').html(result);
});
</script>