X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fajax%2Fajax.js;h=ffe30481d37e956024115124454c52801b82f9eb;hb=f96bf1041553775a94c1034c97e253e350217173;hp=dd54d0c30f7c455399ee2731f5c816312848e40a;hpb=f28f199dc0a353135ef8b9afa2f3d25c6ffd2c75;p=jquery.git diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js index dd54d0c..ffe3048 100644 --- a/src/ajax/ajax.js +++ b/src/ajax/ajax.js @@ -62,9 +62,25 @@ jQuery.fn.extend({ }, serialize: function() { - return jQuery.param( this ); - } - + return jQuery.param(this.serializeArray()); + }, + serializeArray: function() { + return this.map(function(){ + return jQuery.nodeName(this, "form") ? + jQuery.makeArray(this.elements) : this; + }) + .filter(function(){ + return this.name && !this.disabled && + (this.checked || /select|textarea/i.test(this.nodeName) || + /text|hidden|password/i.test(this.type)); + }) + .map(function(i, elem){ var val = jQuery(this).val(); + return val == null ? null : + val.constructor == Array ? + jQuery.map( val, function(i, val){ return {name: elem.name, value: val}; + }) : + {name: elem.name, value: val}; + }).get(); } }); // Attach a bunch of functions for handling common AJAX events @@ -440,7 +456,7 @@ jQuery.extend({ s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) ); // Return the resulting serialization - return s.join("&"); + return s.join("&").replace(/%20/g, "+"); } });