Spec-Zone.ru › jQuery

jQuery.param()

jQuery.param( obj )Возвращает: Строка

Описание: Создать сериализованное представление массива, обычного объекта или объекта jQuery, подходящее для использования в строке запроса URL или запросе Ajax. В случае передачи объекта jQuery, он должен содержать элементы ввода с свойствами name/value.

  • версия добавлена: 1.2jQuery.param( obj )

    • obj
      Тип: Массив или Обычный объект или jQuery
      Массив, обычный объект или объект jQuery для сериализации.
  • версия добавлена: 1.4jQuery.param( obj, traditional )

    • obj
      Тип: Массив или Обычный объект или jQuery
      Массив, обычный объект или объект jQuery для сериализации.
    • traditional
      Тип: Булево значение
      Логическое значение, указывающее, следует ли выполнить традиционную «поверхностную» сериализацию.

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

Начиная с jQuery 1.3, возвращаемое значение функции используется вместо функции в качестве строки.

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

Начиная с jQuery 3.0, метод больше не использует jQuery.ajaxSettings.traditional в качестве значения по умолчанию и будет использовать false. Для наилучшей совместимости между версиями вызывайте $.param() с явным значением для второго аргумента и не используйте значения по умолчанию.

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

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

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

Примечание: Поскольку не существует общепринятого стандарта для строк параметров, невозможно закодировать сложные структуры данных с помощью этого метода таким образом, чтобы это работало идеально во всех языках, поддерживающих такие входные данные. Используйте формат JSON в качестве альтернативы для кодирования сложных данных.

В jQuery 1.4 также сериализуются элементы ввода 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

Для имитации поведения $.param() до jQuery 1.4, мы можем установить аргумент traditional в true.

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

Значения shallowEncoded и shallowDecoded отображаются следующим образом:

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

Примеры:

Сериализовать объект ключ/значение.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.param demo</title>
  <style>
  div {
    color: red;
  }
  </style>
  <script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
 
<div id="results"></div>
 
<script>
var params = { width:1680, height:1050 };
var str = jQuery.param( params );
$( "#results" ).text( str );
</script>
 
</body>
</html>

Демонстрация:

Сериализовать несколько сложных объектов

// <=1.3.2:
$.param({ a: [ 2, 3, 4 ] }); // "a=2&a=3&a=4"
// >=1.4:
$.param({ a: [ 2, 3, 4 ] }); // "a[]=2&a[]=3&a[]=4"
 
// <=1.3.2:
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a=[object+Object]&d=3&d=4&d=[object+Object]"
 
// >=1.4:
$.param({ a: { b: 1, c: 2 }, d: [ 3, 4, { e: 5 } ] });
// "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquery.com/jQuery.param

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API