En general uso serialize()en el elemento de formulario.
Tenga en cuenta que varias opciones de <seleccionar> se serializan bajo la misma clave, p. Ej.
<select id="foo" name="foo" multiple="multiple">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
dará como resultado una cadena de consulta que incluye múltiples ocurrencias del mismo parámetro de consulta:
[path]?foo=1&foo=2&foo=3&someotherparams...
que puede no ser lo que quieres en el backend.
Utilizo este código JS para reducir múltiples parámetros a una sola tecla separada por comas (copiada descaradamente de la respuesta de un comentarista en un hilo en el lugar de John Resig):
function compress(data) {
data = data.replace(/([^&=]+=)([^&]*)(.*?)&\1([^&]*)/g, "$1$2,$4$3");
return /([^&=]+=).*?&\1/.test(data) ? compress(data) : data;
}
que convierte lo anterior en:
[path]?foo=1,2,3&someotherparams...
En su código JS lo llamaría así:
var inputs = compress($("#your-form").serialize());
Espero que ayude.