jQuery ajax - param() metode
eksempel
Serialiser en key/value Objekt:
var params = { width:1900, height:1200 }; var str = jQuery.param(params); $("#results").text(str);
Resultat:
width=1680&height=1050
TIY eksempel
Udskriv resultatet af den serialiserede objekt.
$("button").click(function(){ $("div").text($.param(personObj)); });
Definition og brug
param() metoden opretter en serialiseret repræsentation af array eller objekt.
Denne serialiserede værdi kan bruges i URL-søgestrengen ved AJAX-anmodninger.
syntaks
jQuery.param(object,traditional)
parametre | beskrivelse |
---|---|
object | den array eller objekt, der skal serialiseres. |
traditional | definere om der skal bruges traditionel måde for shallow serialisering (parameter serialisering). |
detaljeret beskrivelse
param() metoden bruges til at konvertere elementværdierne til en serialiseret strengrepræsentation. Se .serialize() Få mere information.
For jQuery 1.3, hvis den overførte parameter er en funktion, vil .param() returnere funktionens værdi, ikke som en streng.
For jQuery 1.4 vil .param() metoden serialisere objektet dybt rekursivt for at opfylde kravene til moderne skriptsprog, såsom PHP, Ruby on Rails osv. Du kan deaktivere denne funktion globalt ved at sætte jQuery.ajaxSettings.traditional = true;.
Hvis den overførte objektet er i arrayet, skal det være med .serializeArray() den returnerer en objektarray i formatet:
[{name:"first",value:"Rick"}, {name:"last",value:"Astley"} {name:"job",value:"Rock Star"}]
Bemærk:Da nogle rammer har begrænset evne til at analysere serialiserede tal, skal du være meget forsigtig, når du sender arrays, der indeholder objekter eller indlejrede arrayer som parametre!
I jQuery 1.4 vil HTML5s input-element også blive serialiseret.
Flere eksempler
Vi kan vise objektets forespørgselssognsrepræsentation og URI-koderede versioner som følger:
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);
Output af værdierne for recursiveEncoded og recursiveDecoded er som følger:
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
Man kan sætte traditional parameter til true for at simulere $.param()s opførsel i versioner af jQuery før 1.4:
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);
Output af værdierne for recursiveEncoded og recursiveDecoded er som følger:
a=%5Bobject+Object%5D&b=1&b=2&b=3 a=[object+Object]&b=1&b=2&b=3