JQuery 1.4 released a change for Nested param serialization. From their site:
jQuery 1.4 adds support for nested param serialization in jQuery.param, using the approach popularized by PHP, and supported by Ruby on Rails. For instance, {foo: ["bar", "baz"]} will be serialized as “foo[]=bar&foo[]=baz”.
In jQuery 1.3, {foo: ["bar", "baz"]} was serialized as “foo=bar&foo=baz”. However, there was no way to encode a single-element Array using this approach. If you need the old behavior, you can turn it back on by setting the traditional Ajax setting (globally via jQuery.ajaxSettings.traditional
or on a case-by-case basis via the traditional flag).
The []
brackets are normally used to indicate an array, and this appears to be what they are trying to make more obvious here I think (as your query-string could be read to see that one value is being overwritten by the other).
Edit:
I think you could probably follow their suggestion to use either:
// Globally set it to use the old 1.3.* way of doing things.
jQuery.ajaxSettings.traditional = true;
// Enables the 1.3.* way for a single Ajax request only
$.ajax({ data: stuff, traditional: true });