Ho cercato e trovato diversi modi per ottenere il pulsante di invio name
+ value
inviato al server utilizzando jQuery + AJAX. Non mi piacevano molto ...
Uno dei migliori è stata la soluzione del cacciatore presentata qui!
Ma ne ho scritto un altro io stesso.
Voglio condividere, perché è buono e, come avevo bisogno, funziona anche con i moduli caricati tramite ajax (dopo 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'));
});
Semplice! Quando si fa clic sul pulsante di invio, un campo nascosto viene aggiunto al modulo, utilizzando lo stesso name
e value
del pulsante di invio.
EDIT: la versione seguente è più facile da leggere. Inoltre, si occupa di rimuovere i campi nascosti precedentemente aggiunti (nel caso di inviare lo stesso modulo due volte, il che è perfettamente possibile quando si utilizza AJAX).
Codice migliorato:
$(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()
. Penso che gli eventi di clic siano la strada da percorrere.