[Функция] jQuery.param(obj)
Раздел "Forms"
Метод объединяет значения массива или объекта в пригодное для использования в URL значение при отправке данных через Ajax.
obj: массив или jQuery объект, занчения котрого будут объединены
jQuery.param(obj,traditional)
1.4
obj:
массив или объект для объединения его значений
traditional:
булев индикатор, определяющий способ объединения
Данный метод используется внутренне для конвертации значения элемента в объединённое строковое представление. (подробнее об этом смотрите в описании метода .serialize())
Начиная с jQuery 1.4 метод $.param() рекурсивно добирается до объектов, снабжая их дополнительными метками в соответствие с популярными языками "PHP" и "Ruby on Rails". Для отключения такой функциональности установите:
jQuery.ajaxSettings.traditional = true;.
Примечание: так как некоторые фоеймовивки имеют ограничения по количеству объектом массива при разборе, мы должны соблюдать осторожность при передаче аргумента содержащего массив или объект вложенные в другой массив.
В jQuery 1.4 поддерживается сериализация элементов input в соответствие со стандартом HTML.
Пример:
Мы можем отобразить строковое представление объекта и его раздекодированное значение с помощью метода decodeURIComponent. Занчения перменных recursiveEncoded и recursiveDecoded отобразятся следующим образом:
<p>
a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
</p>
<p>a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&amp;b[]=3</p>
"jQuery"
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var recursiveEncoded = jQuery.param(myObject);
var recursiveDecoded = decodeURIComponent(jQuery.param(myObject));
$('#results1').text(recursiveEncoded);
$('#results2').text(recursiveDecoded);
"HTML"
<div id="results1"></div>
<div id="results2"></div>
"CSS"
div { color:blue; }
"Живой пример jQuery"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link href="http://test-drupal.ru/themes/slyweb/css/jqueryiframe.css"
rel="stylesheet" type="text/css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var recursiveEncoded = jQuery.param(myObject);
var recursiveDecoded = decodeURIComponent(jQuery.param(myObject));
$('#results1').text(recursiveEncoded);
$('#results2').text(recursiveDecoded);
});
</script>
</head>
<body class="iframe">
<div id="results1"></div>
<div id="results2"></div>
</body>
</html>
<style>
div { color:blue; }
</style>
Пример:
Мы можем отобразить строковое представление объекта и его раздекодированное значение с помощью метода decodeURIComponent.
значения переменных recursiveEncoded и recursiveDecoded отобразятся следующим образом:
<p>a=%5Bobject+Object%5D&b=1&b=2&b=3</p>
<p>a=[object+Object]&b=1&b=2&b=3</p>
"jQuery"
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var shallowEncoded = jQuery.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);
$('#results1').text(shallowEncoded);
$('#results2').text(shallowDecoded);
"HTML"
<div id="results1"></div>
<div id="results2"></div>
"Живой пример jQuery"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link href="http://test-drupal.ru/themes/slyweb/css/jqueryiframe.css"
rel="stylesheet" type="text/css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var shallowEncoded = jQuery.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);
$('#results1').text(shallowEncoded);
$('#results2').text(shallowDecoded);
});
</script>
</head>
<body class="iframe">
<div id="results1"></div>
<div id="results2"></div>
</body>
</html>
<style>
div { color:red; }
</style>
Пример:
Приоритетным поведением метода $.param() для Jquery 1.4 является установка аргумента traditional как true.
"jQuery"
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var shallowEncoded = jQuery.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);
$('#results1').text(shallowEncoded);
$('#results2').text(shallowDecoded);
"HTML"
<div id="results1"></div>
<div id="results2"></div>
"Живой пример jQuery"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link href="http://test-drupal.ru/themes/slyweb/css/jqueryiframe.css"
rel="stylesheet" type="text/css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
var myObject = {
a: {
one: 1,
two: 2,
three: 3
},
b: [1,2,3]
};
var shallowEncoded = jQuery.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);
$('#results1').text(shallowEncoded);
$('#results2').text(shallowDecoded);
});
</script>
</head>
<body class="iframe">
<div id="results1"></div>
<div id="results2"></div>
</body>
</html>
<style>
div { color:red; }
</style>
Версия jQuery 1.4.2
Документ создан 2010-08-21