jQuery serializeArray no incluye el botón de envío en el que se hizo clic

Tengo un formulario que tiene dos botones. Uno para guardar un registro y el otro para cancelar el procedimiento de guardado. Estoy usando elrails.js (un complemento común de AJAX / jQuery para aquellos de ustedes que no lo saben) archivo javascript que funciona con jQuery para llamadas discretas javascript / ajax. Cuando envío los datos del formulario a través de ajax, quiero que el nombre y el valor del botón en el que hice clic se envíen con el resto de los datos para poder tomar una decisión sobre qué hacer en función del botón en el que se hizo clic.

El método en elrails.js usos de archivo.serializeArray() para enviar datos de formulario al servidor. El problema es que esto no incluye el par nombre / valor del botón en el que he hecho clic. El sitio web de jQuery afirma que lo hacen a propósito (aunque es mi opinión que deberían hacerlo):

"Los.serializeArray() El método utiliza las reglas estándar del W3C paracontroles exitosos para determinar qué elementos debe incluir; en particular, el elemento no se puede deshabilitar y debe contener un atributo de nombre. No se serializa ningún valor de botón de envío porque el formulario no se envió mediante un botón ".

¿Cómo pueden suponer que un formulario NO SE ENVIÓ utilizando un botón? Esto no tiene sentido y una suposición equivocada, creo.

Según las reglas del W3C, el botón que se activó para el envío de un formulario se considera uncontrol exitoso.

Dado que los desarrolladores de jQuery han decidido hacer esto a propósito, ¿puedo suponer que hay otro método queNo excluir el botón activado en una serialización?

EDITAR: Aquí hay un ejemplo rápido de cómo se vería mi formulario ...

<!DOCTYPE html5>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
  $(document).ready(function() {
    $('#form').submit(function(e) {
      // put your breakpoint here to look at e
      var x = 0;
    });
  });
</script>
</head>
<body>
  <form id="form">
    <input name="name" type="text"><br/>
    <input name="commit" type="submit" value="Save"/>
    <input name="commit" type="submit" value="Cancel"/>
  </form>
</body>

Respuestas a la pregunta(5)

Su respuesta a la pregunta