Jquery serialize и выпадающее меню multi select

Я использую функцию jquery serialize() для сериализации значений формы и отправки ее через ajax

как, например, если имя и идентификатор формы factoryUsers

var data=$("#factoryUsers").serialize();

Теперь это отлично подходит для форм, которые имеют текстовые поля, текстовые области, простые выпадающие списки и т.д. Но когда у меня есть несколько выпадающих списков, все идет не так например. если у меня есть раскрывающийся список типа

<select size="5" id="factoryUsers" name="factoryUsers" multiple="multiple">

сериализация больше не работает. поэтому, если я выбираю 3 пользователя, я получаю строку запроса, например

factoryUsers=5&factoryUsers=23&factoryUsers=11

изменение типа select для массива не помогает либо factoryUsers[]

Любая идея или помощь в том, как правильно это сделать, будет отличной.

Ответ 1

Вывод строки, который вы описали выше, является правильным способом отправки нескольких значений для форм с тем же именем через HTTP, поэтому jQuery работает правильно. Вам решать, как это обрабатывается на стороне сервера, а затем зависит от того, какой язык вы используете.

Если вы используете PHP, это может помочь: http://bytes.com/topic/php/answers/12267-how-php-_post-gets-multiple-values-html-form

Можете ли вы рассказать нам, какой язык вы используете?

Ответ 2

Попробуйте изменить имя выбора на factoryUsers[]. Таким образом, вы можете пропустить его в своем бэкэнде.

Ответ 3

Все, что вам нужно, это изменить name= "factoryUsers" на name= "factoryUsers []" PHP будет рассматривать его как массив.

Ответ 4

Просто попробуйте получить значение с val()

data='factoryUsers=' + $("#factoryUsers").val();

Он даст вам значения с запятой отдельно.

factoryUsers = 1,2,4

Если этот элемент является одним из ваших форм. Затем попробуйте добавить значение конца конца сериализации. Пример:

data= f.serialize() + '&factoryUsers=' + $('#factoryUsers').val();

Так как элемент, записанный дважды в запрос, последнее значение будет действительным в контроллере.

Ответ 5

Вы можете использовать функцию PHP

parse_str($_POST)

Эта функция кажется функцией извлечения. После этого вы можете получить доступ к var с именем $factoryUsers, и этот var является массивом $factoryUsers[n].

Ответ 6

Имя вашего элемента должно быть типом массива factoryUsers[] Измените свой код:

<select size="5" id="factoryUsers" name="factoryUsers[]" multiple="multiple">

Спасибо...