.serializeArray()
Encode a set of form elements as an array of names and values.
.serializeArray()🡢 Array
The .serializeArray()
method creates a JavaScript array of objects, ready to be encoded as a JSON string. It operates on a jQuery collection of form
s and/or form controls. The controls can be of several types:
<form>
<div><input type="text" name="a" value="1" id="a" /></div>
<div><input type="text" name="b" value="2" id="b" /></div>
<div><input type="hidden" name="c" value="3" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div>
<select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>
</div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
<div>
<input type="submit" name="g" value="Submit" id="g" />
</div>
</form>
The .serializeArray()
method uses the standard W3C rules for successful controls to determine which elements it should include; in particular the element cannot be disabled and must contain a name
attribute. No submit button value is serialized since the form was not submitted using a button. Data from file select elements is not serialized. Elements that do not contain a value
attribute are represented with the empty string value.
This method can act on a jQuery object that has selected individual form controls, such as <input>
, <textarea>
, and <select>
. However, it is typically easier to select the <form>
element itself for serialization:
$("form").submit(function (event) {
console.log($(this).serializeArray());
event.preventDefault();
});
This produces the following data structure (provided that the browser supports console.log
):
[
{
name: "a",
value: "1",
},
{
name: "b",
value: "2",
},
{
name: "c",
value: "3",
},
{
name: "d",
value: "4",
},
{
name: "e",
value: "5",
},
];
Get the values from a form, iterate through them, and append them to a results display.
<p><b>Results:</b> <span id="results"></span></p>
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
<br />
<input type="checkbox" name="check" value="check1" id="ch1" />
<label for="ch1">check1</label>
<input
type="checkbox"
name="check"
value="check2"
checked="checked"
id="ch2"
/>
<label for="ch2">check2</label>
<input type="radio" name="radio" value="radio1" checked="checked" id="r1" />
<label for="r1">radio1</label>
<input type="radio" name="radio" value="radio2" id="r2" />
<label for="r2">radio2</label>
</form>
body,
select {
font-size: 14px;
}
form {
margin: 5px;
}
p {
color: red;
margin: 5px;
}
b {
color: blue;
}
function showValues() {
var fields = $(":input").serializeArray();
$("#results").empty();
jQuery.each(fields, function (i, field) {
$("#results").append(field.value + " ");
});
}
$(":checkbox, :radio").click(showValues);
$("select").change(showValues);
showValues();