jQuery ajax - param() -Methode

Beispiels

Serialisieren eines key/value Objekt:

var params = { width:1900, height:1200 };
var str = jQuery.param(params);
$("#results").text(str);

Ergebnis:

width=1680&height=1050

TIY - Beispiel

Geben Sie das Ergebnis der Serialisierung des Objekts aus:

$("button").click(function(){
  $("div").text($.param(personObj));
});

Probieren Sie es selbst aus

Definition und Verwendung

Die Methode .param() erstellt eine serialisierte Darstellung von Arrays oder Objekten.

Dieser Serialisierungswert kann im URL-Abfragestring einer AJAX-Anfrage verwendet werden.

Syntax

jQuery.param(object,traditional)
Parameter Beschreibung
object Das Array oder Objekt, das serialisiert werden soll.
traditional Legt fest, ob eine traditionelle, einfache Serialisierung (Parameter-Serialisierung) verwendet wird.

Details

Die Methode .param() wird verwendet, um den Wert eines Elements intern in eine serialisierte Zeichenkette zu konvertieren. Siehe .serialize() Erfahren Sie mehr.

Für jQuery 1.3 wird der Rückgabewert einer Funktion durch .param() die Rückgabewert der Funktion sein, anstatt die Funktion als String zurückzugeben.

Für jQuery 1.4 wird die .param() -Methode auf tiefem Niveau rekursiv serialisiert, um den Anforderungen moderner Skriptsprachen wie PHP, Ruby on Rails usw. gerecht zu werden. Sie können diese Funktion global deaktivieren, indem Sie jQuery.ajaxSettings.traditional = true; festlegen.

wenn das übergebene Objekt im Array ist, muss es in der Form sein: .serializeArray() der Rückgabewert ist ein Array von Objekten im Format:

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

Hinweis:Da einige Frameworks bei der Parsing von serialisierten Zahlen begrenzt sind, bitte beim Übermitteln von Arrays mit Objekten oder verschachtelten Arrays als Parameter vorsichtig sein!

In jQuery 1.4 werden auch HTML5 Input-Elemente serialisiert.

Mehr Beispiele

Wir können den Suchstrings und die URI-kodierte Version des Objekts wie folgt anzeigen:

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

Die Werte von recursiveEncoded und recursiveDecoded werden wie folgt ausgegeben:

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 kann den Parameter traditional auf true setzen, um das Verhalten von $.param() vor jQuery 1.4 zu imitieren:

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

Die Werte von recursiveEncoded und recursiveDecoded werden wie folgt ausgegeben:

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