# .serializeArray()

## serializeArray ( ) Returns: Array version added: 1.2

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 object representing a set of form elements. The form elements 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.

This method can act on a jQuery object that has selected individual form elements, such as `<input>`, `<textarea>`, and `<select>`. However, it is typically easier to select the `<form>` tag 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"
      }
    ]

## Examples:

#### Example: Get the values from a form, iterate through them, and append them to a results display.

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>css demo</title>

      <style>

      body, select {
        font-size: 14px;
      }
      form {
        margin: 5px;
      }
      p {
        color: red;
        margin: 5px;
      }
      b {
        color: blue;
      }

      </style>

      <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    </head>
    <body>

    <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>

    <script>

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

    </script>

    </body>
    </html>

#### Demo: