В общем случае используйте serialize()
в элементе формы.
Обратите внимание, что несколько параметров
<select id="foo" name="foo" multiple="multiple">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
приведет к строке запроса, включающей несколько вхождений одного и того же параметра запроса:
[path]?foo=1&foo=2&foo=3&someotherparams...
что не может быть тем, что вы хотите в бэкэнде.
Я использую этот код JS, чтобы свести несколько параметров к одному ключу, разделенному запятыми (беззастенчиво скопированному из ответа комментатора в потоке вместо Джона Резига):
function compress(data) {
data = data.replace(/([^&=]+=)([^&]*)(.*?)&\1([^&]*)/g, "$1$2,$4$3");
return /([^&=]+=).*?&\1/.test(data) ? compress(data) : data;
}
, что превращает вышесказанное в:
[path]?foo=1,2,3&someotherparams...
В своем коде JS вы бы назвали это так:
var inputs = compress($("#your-form").serialize());
Надеюсь, это поможет.