Преобразование объектов для использования в url

jQuery.param()

Преобразует объект, массив или массив объектов в строку, которая соответствует формату передачи данных через url.

jQuery.param(obj)1.2

obj — объект, массив или массив объектов, которые будут преобразованы в строку.

jQuery.param(obj,[traditional])1.4

Начиная с 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

Ссылки

Поисковые ключи:
  • преобразование объекта в строку для url
  • сериализация объекта в строку для url
  • $.param()
  • .param()
  • param()