Eu pesquisei e encontrei várias maneiras de obter o botão de envio name
+ value
enviado para o servidor usando jQuery + AJAX. Não gostei muito deles ...
Um dos melhores foi a solução de hunter apresentada aqui!
Mas eu mesmo escrevi outro.
Quero compartilhar, porque é bom, e como precisei funciona também com forms carregados via ajax (após 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'));
});
Simples! Quando o botão enviar é clicado, um campo oculto é adicionado ao formulário, usando o mesmo name
evalue
do botão enviar.
EDIT: A versão abaixo é mais fácil de ler. Além disso, ele se encarrega de remover campos ocultos anexados anteriormente (no caso de enviar o mesmo formulário duas vezes, o que é perfeitamente possível quando se usa AJAX).
Código aprimorado:
$(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()
. Acho que os eventos de clique são o caminho a percorrer.