Hoy vamos a compartir una función muy útil a la hora de trabajar con formularios y ajax con Jquery.

Con el siguiente código lograremos validar el formulario contra sus tipos de campos, patterns y campos obligatorios, generaremos un objeto que contenga todos los campos de un formulario con sus respectivos valores y mostraremos como enviar dichos valores por ajax.

Creamos nuestra función: serializeForm()

$.fn.serializeForm = function()
{
  var o = {};
  var i = this.serializeArray();

  $.each(i, function() {
    if (o[this.name]) {
      if (!o[this.name].push) {
        o[this.name] = [o[this.name]];
      }
      o[this.name].push(this.value || '');
    } else {
      o[this.name] = this.value || '';
    }
  });
  
  return o;

};



Validación, serialización y envío de datos:

Una vez creada nuestra función vamos a ejecutar la validación html5 sobre el formulario, también haremos uso de la función preventDefault() para evitar que el mismo active automáticamente y finalmente enviaremos nuestros datos por ajax.

$("form#formId button#enviarForm").click(function(e){

  /* Compruebo la validación html5 */
  if($("form#formId")[0].checkValidity()) {

    /* Evitamos que se ejecute el formulario */
    e.preventDefault();

    /* Serializamos los datos */
    var dataString = $("form#formId").serializeObject();

    
    /* Enviamos por ajax */

    $.ajax({

      type: "POST", /* GET */
      url: RUTA A MI PROCESO,
      data: dataString,
      success: function(result) {
       
       /* mi código para result */
      }

    });
  }

});

Recuerden SIEMPRE VALIDAR nuestros datos en el backend! La validación con html5 solo nos ayuda a mejorar nuestra experiencia de usuario y no debe ser utilizada como medida de seguridad.