jQuery ajax - param() 方法
实例
序列化一个 key/value 对象:
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() 方法创建数组或对象的序列化表示。
该序列化值可在进行 AJAX 请求时在 URL 查询字符串中使用。
语法
jQuery.param(object,traditional)
参数 | 描述 |
---|---|
object | 要进行序列化的数组或对象。 |
traditional | 是否使用传统方式浅层进行序列化(参数序列化)。 |
详细说明
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에서 HTML5의 input 요소도 시리얼라이즈됩니다.
더 많은 예제
객체의 쿼리 스트링 표현 및 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로 설정하여 jQuery 1.4 이전 버전의 $.param()의 동작을 모의할 수 있습니다:
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