.serializeArray()Returns: Array

Description: Encode a set of form elements as an array of names and values.

The .serializeArray() method creates a JavaScript array of objects, ready to be encoded as a JSON string. It operates on a jQuery collection of forms and/or form controls. The controls can be of several types:

  <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>
    <textarea name="d" rows="8" cols="40">4</textarea>
  <div><select name="e">
    <option value="5" selected="selected">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <input type="checkbox" name="f" value="8" id="f">
    <input type="submit" name="g" value="Submit" id="g">

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() );

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.

<!doctype html>
<html lang="en">
  <meta charset="utf-8">
  <title>serializeArray demo</title>
  body, select {
    font-size: 14px;
  form {
    margin: 5px;
  p {
    color: red;
    margin: 5px;
  b {
    color: blue;
  <script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<p><b>Results:</b> <span id="results"></span></p>
  <select name="single">
  <select name="multiple" multiple="multiple">
    <option selected="selected">Multiple</option>
    <option selected="selected">Multiple3</option>
  <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>
  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 );


© The jQuery Foundation and other contributors
Licensed under the MIT License.