Skip to content

Instantly share code, notes, and snippets.

@quirkey
Created February 17, 2009 23:01
Show Gist options
  • Select an option

  • Save quirkey/66048 to your computer and use it in GitHub Desktop.

Select an option

Save quirkey/66048 to your computer and use it in GitHub Desktop.
$.extend({
param: function( a ) {
var s = [ ];
function add( key, value ){
s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
};
// If an array was passed in, assume that it is an array
// of form elements
if ( jQuery.isArray(a) || a.jquery )
// Serialize the form elements
jQuery.each( a, function(){
add( this.name, this.value );
});
// Otherwise, assume that it's an object of key/value pairs
else
// Serialize the key/values
for ( var j in a )
// If the value is an array then the key names need to be repeated
if ( jQuery.isArray(a[j]) )
jQuery.each( a[j], function(){
add( j, this );
});
else if (typeof a[j] == 'object')
for ( var k in a[j])
add(j + '[' + k + ']', jQuery.isFunction(a[j][k]) ? a[j][k]() : a[j][k] );
else
add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
// Return the resulting serialization
return s.join("&").replace(/%20/g, "+");
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment