jQuery ajax - param() methode

voorbeeld

serialiseer een key/value Object:

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

Resultaat:

width=1680&height=1050

TIY voorbeeld

De resultaten van de geserialiseerde objectweergave weergeven:

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

Probeer het zelf

definitie en gebruik

param() methode maakt een geserialiseerde weergave van een massa of object.

Deze geserialiseerde waarde kan worden gebruikt in de URL-querystring bij een AJAX-aanvraag.

syntaxis

jQuery.param(object,traditional)
parameter beschrijving
object de te serialiseren massa of het object.
traditional bepaalt of een traditionele manier van shallow serialisatie (parameterserialisatie) wordt gebruikt.

gedetailleerde beschrijving

De param() methode wordt gebruikt om elementwaarden intern om te zetten naar een geserialiseerde stringrepresentatie. Raadpleeg .serialize() Meer informatie.

Voor jQuery 1.3, als het doorgegeven parameter een functie is, krijg je de returnwaarde van deze functie met .param(), in plaats van de functie als een string terug te geven.

Voor jQuery 1.4 zal de .param() methode op die manier diep recursief objecten serialiseren, om aan de eisen van moderne scripttalen te voldoen, zoals PHP, Ruby on Rails, enz. Je kunt deze functie wereldwijd uitschakelen door jQuery.ajaxSettings.traditional = true; in te stellen.

Als het doorgegeven object in de massa zit, moet het zijn met .serializeArray() de retourwaarde is een objectenmassa van het formaat:

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

Opmerking:Omdat sommige frameworks beperkte capaciteiten hebben bij het parseren van geserialiseerde getallen, moet u voorzichtig zijn bij het overdragen van arrays die objecten of genestelde arrays bevatten als parameters!

In jQuery 1.4 worden ook de HTML5 input-elementen geserialiseerd.

Meer voorbeelden

We kunnen de query string-representatie van het object en de URI-gecodeerde versie als volgt weergeven:

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

De waarden van recursiveEncoded en recursiveDecoded worden als volgt weergegeven:

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

U kunt de traditional parameter instellen op true om het gedrag van $.param() in versies van jQuery 1.4 en eerder te simuleren:

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

De waarden van recursiveEncoded en recursiveDecoded worden als volgt weergegeven:

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