not - serialize jquery ajax post php
jQuery serialize convierte todos los espacios a más (3)
Actualmente, donde sea que use serialize, tengo que usarlo así:
.serialize().replace(//+/g,''%20'');
de lo contrario, cualquier espacio en los datos del formulario se convertirá en + ''s. ¿Hay alguna configuración que pueda hacer que esto sea el predeterminado?
No crea que hay un valor predeterminado, tendrá que codificar la cadena de una de estas maneras .
Aunque puedes crear tu propio plugin:
jQuery.fn.serializeAndEncode = function() {
return escape(this.serialize());
}
$(myForm).serializeAndEncode();
Para divertirse, aquí hay una alternativa que no usa una variable temporal:
$.fn.serializeAndEncode = function() {
return $.map(this.serializeArray(), function(val) {
return [val.name, encodeURIComponent(val.value)].join(''='');
}).join(''&'');
};
$("#formToSerialize").serializeAndEncode();
Tuve que hacer lo mismo. La solución que dio Terry, con escape (), no funciona. The = y & están siendo codificados (no queremos eso) y los + aún están allí.
Lo que hice fue crear mi propia función para serializar:
var QueryString = "";
$(selector).each(function(index) {
if(QueryString != "") QueryString += "&";
QueryString += $(this).get(0).id + "=" + encodeURIComponent( $(this).val() );
});