## .serializeArray()Returns: Array

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

- #### version added: 1.2.serializeArray()

  - This method does not accept any arguments.

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:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
    <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:

1 2 3 4 |
    $( "form" ).submit(function( event ) {  console.log( $( this ).serializeArray() );  event.preventDefault();});

This produces the following data structure (provided that the browser supports `console.log`):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
    [  {    name: "a",    value: "1"  },  {    name: "b",    value: "2"  },  {    name: "c",    value: "3"  },  {    name: "d",    value: "4"  },  {    name: "e",    value: "5"  }]

## Example:

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
    <!doctype html><html lang="en"><head>  <meta charset="utf-8">  <title>serializeArray demo</title>  <style>  body, select {    font-size: 14px;  }  form {    margin: 5px;  }  p {    color: red;    margin: 5px;  }  b {    color: blue;  }  </style>  <script src="https://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: