De uso geral serialize()
o elemento do formulário.
Lembre-se de que várias opções <select> são serializadas sob a mesma chave, por exemplo
<select id="foo" name="foo" multiple="multiple">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
resultará em uma sequência de consultas que inclui várias ocorrências do mesmo parâmetro de consulta:
[path]?foo=1&foo=2&foo=3&someotherparams...
que pode não ser o que você deseja no back-end.
Eu uso esse código JS para reduzir vários parâmetros a uma chave única separada por vírgula (copiada descaradamente da resposta de um comentarista em um tópico no lugar de John Resig):
function compress(data) {
data = data.replace(/([^&=]+=)([^&]*)(.*?)&\1([^&]*)/g, "$1$2,$4$3");
return /([^&=]+=).*?&\1/.test(data) ? compress(data) : data;
}
que transforma o acima em:
[path]?foo=1,2,3&someotherparams...
No seu código JS, você chamaria assim:
var inputs = compress($("#your-form").serialize());
Espero que ajude.