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