Busqué y encontré varias formas de enviar el botón de envío name
+ value
al servidor usando jQuery + AJAX. No me gustaron mucho ...
¡Una de las mejores fue la solución de Hunter presentada aquí!
Pero yo mismo escribí otro.
Quiero compartir, porque es bueno y, según lo necesitaba, también funciona con formularios cargados a través de ajax (después de document.ready):
$(document).on('click', 'form input[type=submit]', function(){
$('<input type="hidden" />').appendTo($(this).parents('form').first()).attr('name', $(this).attr('name')).attr('value', $(this).attr('value'));
});
¡Sencillo! Cuando se hace clic en el botón enviar, se agrega un campo oculto al formulario, utilizando el mismo name
y value
del botón enviar.
EDITAR: La versión a continuación es más fácil de leer. Además, se encarga de eliminar los campos ocultos previamente añadidos (en el caso de enviar el mismo formulario dos veces, lo cual es perfectamente posible cuando se usa AJAX).
Código mejorado:
$(document).on('click', 'form input[type=submit]', function(){
var name = $(this).attr('name');
if (typeof name == 'undefined') return;
var value = $(this).attr('value');
var $form = $(this).parents('form').first();
var $input = $('<input type="hidden" class="temp-hidden" />').attr('name', name).attr('value', value);
$form.find('input.temp-hidden').remove();
$form.append($input);
});
formobj.submit()
. Creo que los eventos de clic son el camino a seguir.