- // 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 );
- });
+ // Recursively encode parameters from object,
+ // building a prefix path as we go down
+ function buildParams(obj, prefix)
+ {
+ if ( jQuery.isArray(obj) ) {
+ for ( var i = 0, length = obj.length; i < length; i++ ) {
+ buildParams( obj[i], prefix );
+ };
+ } else if( typeof(obj) == "object" ) {
+ for ( var j in obj ) {
+ var postfix = ((j.indexOf("[]") > 0) ? "[]" : ""); // move any brackets to the end
+ buildParams(obj[j], (prefix ? (prefix+"["+j.replace("[]", "")+"]"+postfix) : j) );
+ }