Currently, everywhere I use serialize I have to use it like this:
.serialize().replace(/\+/g,'%20');
otherwise any spaces in the form data will be coverted to +'s. Is there a setting that can make this the default.
For fun, here's an alternative that doesn't use a temporary variable:
$.fn.serializeAndEncode = function() { return $.map(this.serializeArray(), function(val) { return [val.name, encodeURIComponent(val.value)].join('='); }).join('&'); }; $("#formToSerialize").serializeAndEncode();
I had to do the same thing. The solution Terry gave, with escape(), doesn't work. The = and & are getting encoded (we don't want that) and the + are still there.
What I did is creating my own function to serialize:
var QueryString = ""; $(selector).each(function(index) { if(QueryString != "") QueryString += "&"; QueryString += $(this).get(0).id + "=" + encodeURIComponent( $(this).val() ); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With