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