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.