我一直在使用jquery serialize()函数来序列化表单的值并通过ajax提交它
喜欢例如如果表单名称和ID是 factoryUsers
var data=$("#factoryUsers").serialize();
现在这适用于具有文本字段,文本区域,简单下拉等的表单。 但是当我有多个下拉列表时,事情就会出错 例如如果我有一个类型的下拉列表
<select size="5" id="factoryUsers" name="factoryUsers" multiple="multiple">
序列化不再正常工作。 所以,如果我选择3个用户,我会得到一个像
这样的查询字符串 factoryUsers=5&factoryUsers=23&factoryUsers=11
将select更改为数组类型对factoryUsers[]
任何想法或帮助如何使其正常工作都会很棒。
答案 0 :(得分:14)
尝试将选择的名称更改为factoryUsers[]
。这样你就可以在你的后端循环它。
答案 1 :(得分:11)
您上面描述的字符串输出是通过HTTP为同名表单提交多个值的正确方法,因此jQuery正常工作。由您决定如何在服务器端处理它,这取决于您使用的语言。
如果您使用的是PHP,这可能有所帮助:http://bytes.com/topic/php/answers/12267-how-php-_post-gets-multiple-values-html-form
您能告诉我们您使用的是哪种语言吗?
答案 2 :(得分:7)
您只需要将name name =“factoryUsers”更改为name =“factoryUsers []”PHP会将其视为数组。
答案 3 :(得分:2)
尝试使用val()
获取值data='factoryUsers=' + $("#factoryUsers").val();
它会以逗号分隔给你的值。
factoryUsers = 1,2,4
如果此项目是您的表单之一。然后尝试添加序列化的项目结束的值。示例:
data= f.serialize() + '&factoryUsers=' + $('#factoryUsers').val();
由于项目在请求中写入两次,因此最后一个值在控制器中有效。
答案 4 :(得分:1)
您可以使用PHP函数
parse_str($_POST)
此功能似乎是一个提取功能。运行此操作后,您可以访问名为$factoryUsers
的var,此var是一个数组$factoryUsers[n]
。
答案 5 :(得分:1)
您的元素名称必须是数组类型 factoryUsers[]
改变你的代码:
<select size="5" id="factoryUsers" name="factoryUsers[]" multiple="multiple">
...谢谢