Transforme um formulário em um link e envie via POST

Os desenvolvedores de back-end às vezes fazem coisas ruins, algo como um formulário com apenas entradas ocultas. Eu não gosto disso Isto é um exemplo:

<form action="/to/next/page">
<input type="hidden" name="next-page" id="next-page" value="3" />
<input type="submit" value="Next" />
</form>

Se você só tiver acesso à parte frontal e quiser melhorar a aparência, pode fazer algo assim:

Em primeiro lugar, transforme o formulário em um link

<a href="/to/next/page?next-page=3">Next</a>

Oh! Beleza!

Faça este pequeno código para interceptar o clique e enviar a postagem

$('#my-link').click(function() {
// Memo this to use latter
var myLink = $(this);
// Now i have the href content
var href = myLink.attr('href');
// And now i have a array, position 0 is our URL and position 1 is our params
var hrefSplited = href.split('?');

// Making the magic, turn my string params in a object
var params = JSON.parse('{"' + decodeURI(hrefSplited[1]).replace(/"/g, '\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}');

// Making the pot
// The first params is the first part of href, the url
$
.post(hrefSplited[0],
params
,
function(data){
alert
('Success, link submited via post');
}
);

// Prevent the link to follow
return false;
});

É apenas um exemplo, talvez você possa encontrar outras implementações para:

var params = JSON.parse('{"' + decodeURI(hrefSplited[1]).replace(/"/g, '\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}');