jQuery ajax - метод param()

пример

Сериализация ключ/значение Объект:

var params = { width:1900, height:1200 };
var str = jQuery.param(params);
$("#results").text(str);

Результат:

width=1680&height=1050

Примеры на TIY

Вывод результатов сериализации объекта:

$("button").click(function(){
  $("div").text($.param(personObj));
});

Попробуйте сами

Определение и использование

Метод param() создает сериализованное представление массива или объекта.

Этот сериализованный значений может быть использован в строке запроса URL при выполнении AJAX-запросов.

Синтаксис

jQuery.param(object,traditional)
Параметр Описание
object Массив или объект, подлежащий сериализации.
traditional Определяет, использовать ли традиционный способ shallow serialization (param serialization).

Подробное описание

Метод param() используется для внутреннего преобразования значений элементов в строковое представление в виде сериализации. См. .serialize() Для получения дополнительной информации.

Для jQuery 1.3, если передаваемый параметр является функцией, то с помощью .param() будет получен返回ный значений этой функции, а не функция будет возвращена как строка.

Для jQuery 1.4, метод .param() будет сериализовывать объекты с помощью глубокого рекурсивного подхода, чтобы соответствовать современным языкам скриптов, таким как PHP, Ruby on Rails и т.д. Вы можете глобально отключить эту функцию, установив jQuery.ajaxSettings.traditional = true;

Если передаваемый объект находится в массиве, то он должен быть в формате .serializeArray() возврат значений является массивом объектов в формате:

[{name:"first",value:"Rick"},
{name:"last",value:"Astley"}
{name:"job",value:"Rock Star"}]

Внимание:Поскольку некоторые фреймворки имеют ограниченные возможности при анализе сериализованных чисел, будьте осторожны при передаче массивов, содержащих объекты или вложенные массивы, в качестве параметров!

В jQuery 1.4 также будут сериализованы элементы input HTML5.

Более примеров

Мы можем показать строковое представление объекта и его URI-кодированную версию следующим образом:

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);

значения recursiveEncoded и 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

Можно установить параметр traditional в true, чтобы имитировать поведение $.param() в версиях jQuery 1.4 и ранее:

var myObject = {
  a: {
    one: 1, 
    two: 2, 
    three: 3
  }, 
  b: [1,2,3]
};
var shallowEncoded = $.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);
alert(shallowEncoded);
alert(shallowDecoded);

значения recursiveEncoded и recursiveDecoded выводятся следующим образом:

a=%5Bobject+Object%5D&b=1&b=2&b=3
a=[object+Object]&b=1&b=2&b=3