jQuery.param()

jQuery.param( nesne ) Dönen Değer : String
Açıklama : Bir array, bir düz nesne veya bir jQuery nesnesini URL sorgu string'lerinde veya ajax isteklerinde kullanılabilecek string'e dönüştürür. JQuery nesnesi verildiğinde name-value özellikleri olan input elemanları içermelidir.

jQuery.param( nesne )
nesne
Tip : Array veya Düz Nesne veya jQuery Nesnesi
Diziye çevrilecek olan nesne.
jQuery.param( obj, traditional )
obj
Tip : Array veya Düz Nesne veya jQuery Nesnesi
Diziye çevrilecek olan nesne.
traditional
Tip : Boolean
Geleneksel "shallow" serializasyonu yapılmasını istediğinizi belirten değer.

Bu fonksiyon form eleman değerlerini dizili yazıya Dönüştürülmesi için kullanılır. Ayrıntı için .serialize() metoduna bakınız.

Versiyon 1.4 sonrası $.param() metodu modern script dilleri ve PHP veya Ruby on Rails gibi framework ihtiyaçlarını karşılayacak şekilde daha gelişmiş recursively dönüştürmeye başladı. Bu geliştirmeyi jQuery.ajaxSettings.traditional = true; ayarı ile iptal edebilirsiniz.

Versiyon 3.0 sonrası $.param() metodu artık jQuery.ajaxSettings.traditional ayarını ve onun default değerini kullanmayı bıraktı ve default false değeri kullandı. Bunlar yüzünden en iyisi metoda ikinci parametreyi vererek nasıl çalışmasını istediğinizi ayrıca belirtin.

Eğer verilen nesne bir array ise bu .serializeArray() metodundan dönen değer gibi nesnelerden oluşan bir array olmalıdır.

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

Not : Bazı framework'lar serialize array'leri ayrıştırmada sınırlı kabiliyete sahip olduklarından geliştiriciler obj nesnesini hazırlarken dikkatli olmalıdır, bir array içinde başka array ya da nesneler olur.

Not : Genel kabul görmüş bir param string'leri standardı olmadığı için, bu metodla karmaşık veri yapılarını işlemek her dil için mümkün olmayabilir. Bu yüzden karmaşık verileri işlemek için JSON formatı kullanmanız tavsiye edilir.

Versiyon 1.4 ten itibaren HTML5 input elemanları da işlenmeye başlamıştır.

Bir nesnenin sorgu string olarak ve URL-decoded olarak nasıl olacağı şöyle görülebilir:

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

Bu kod sonucu recursiveEncoded ve recursiveDecoded stringler şu değerleri alarm eder:

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


Versiyon 1.4 öncesi $.param() metodunu simüle etmek için traditional parametresini true yaparsınız.

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

Bu kod sonucu shallowEncoded ve shallowDecoded değerleri şöyle alert edilir:


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



Örnekler :

Bir key-value nesnesini serialize et.

<style>
  #test1 div {
    color: red;
  }
</style>

<div id="results"></div>

<script>
  var params = { width:1680, height:1050 };
  var str = jQuery.param( params );
  $( "#test1 #results" ).text( str );
</script>

Birkaç karmaşık nesneyi serialize et.

// <=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"

.

.