Преобразование объектов для использования в url
Преобразует объект, массив или массив объектов в строку, которая соответствует формату передачи данных через url.
obj — объект, массив или массив объектов, которые будут преобразованы в строку.
Начиная с jQuery 1.4, по умолчанию, выполняется "глубокое" преобразование элементов obj, что бы соответствовать современным фреймворкам и языкам, таким как PHP или Ruby on Rails. Отменить "глубокое" преобразование можно, указав в необязательном параметре traditional значение true. А что бы "поверхностное" преобразование было установлено по умолчанию, нужно использовать следующий код: jQuery.ajaxSettings.traditional = true;.
Если вы хотите преобразовать в строку массив объектов, то он должен соответствовать формату, которого придерживается метод .serializeArray(), а именно:
[{name:"first",value:"Rick"}, {name:"last",value:"Astley"}, {name:"job",value:"Rock Star"}]
Замечание: некоторые фреймворки обладают слабыми возможностями преобразования объектов, поэтому следует осторожно относиться к преобразованию вложенных друг в друга структур.
Пример
Продемонстрируем преобразование на простом примере:
var myObject = { one: 1, two: 2, three: 3 }; var recursiveEncoded = $.param(myObject); alert(recursiveEncoded);
Результатом будет следующая строка:
one=1&two=2&three=3
Выведем на экран результат довольно сложного преобразования:
var myObject = { a: { one: 1, two: 2, three: 3 }, b: [1,2,3] }; var recursiveEncoded = $.param(myObject); var recursiveDecoded = decodeURIComponent($.param(myObject)); alert(recursiveEncoded); alert(recursiveDecoded);
В результате, на экране появятся два сообщения:
a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3
А вот какой результат мы бы получили, если бы использовали поверхностное (не глубокое) преобразование:
a=%5Bobject+Object%5D&b=1&b=2&b=3
a=[object+Object]&b=1&b=2&b=3