issue with brackets in jQuery Form Data when sending data as json issue with brackets in jQuery Form Data when sending data as json ajax ajax

issue with brackets in jQuery Form Data when sending data as json


you can also use the traditional settings in the ajax callhttp://api.jquery.com/jquery.ajax/#jQuery-ajax-settings

traditional Type: Boolean

Set this to true if you wish to use the traditional style of param serialization.

for example:

$.ajax({ /*usual stuff */ traditional: true})


This notation with the brackets in the key was introduced in jQuery 1.4 to deal with multi-dimensional arrays, or arrays containing objects (or other arrays) themselves. This helps the deserializer to differentiate between an array and a primitive value. For example, if you didn't have the brackets in the key, those two variables would be serialized the same way:

var v1 = { "k1":"v1", "k2":"v2", "k3":["v3"] };

and

var v1 = { "k1":"v1", "k2":"v2", "k3":"v3" };

With the bracket notation, they're encoded as

k1=v2&k2=v2&k3[]=v3

and

k1=v2&k2=v2&k3=v3

respectively.


It is possible to send multiple pieces of data with the same key name to a script. You can do this by adding square brackets [] to the end of the key name to designate that the data should be interpreted as an array.

The function that does this is jQuery.param. As an example of how this works:

$.param({    data: ['value3', 'value4']});

data is an array. When it is serialized, it is rendered as data%5B%5D=value3&data%5B%5D=value4. The serverside script will convert this into an array.