Как и в jQuery 1.4, метод $.param() сериализует глубокие объекты рекурсивно для размещения современных языков сценариев и фреймворков, таких как PHP и Ruby on Rails. Вы можете отключить эту функциональность глобально, установив jQuery.ajaxSettings.traditional = true;.
Учитывая
var p = {foo: [1,2,3], bar: 42};
настройка traditional - true генерирует
foo=1&foo=2&foo=3&bar=42
Пока, например, Python может обрабатывать эти параметры, т.е. Генерирует список для foo, PHP будет рассматривать только последний параметр foo.
Но теперь по умолчанию результат сериализации (на самом деле это кодирование URI)
foo[]=1&foo[]=2&foo[]=3&bar=42
который может быть лучше обработан, как уже упоминалось, PHP и RoR.
Или, может быть, еще более интересно это. Дано:
var p = {foo: {1: [3,4], 2:2,3:3}, bar: 42};
традиционный производит:
foo=[object Object]&bar=42
что явно не полезно по сравнению с "новым" способом: