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.
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() );
});
Don't believe there is a default, you will need to encode the string in one of these ways.
Though you could create your own plugin:
jQuery.fn.serializeAndEncode = function() {
return escape(this.serialize());
}
$(myForm).serializeAndEncode();