jQuery API解释了如何在具有以下内容的表单上使用serialize():
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<br>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
<br>
<input type="checkbox" name="check" value="check1" id="ch1">
<label for="ch1">check1</label>
<input type="checkbox" name="check" value="check2" checked="checked" id="ch2">
<label for="ch2">check2</label>
<br>
<input type="radio" name="radio" value="radio1" checked="checked" id="r1">
<label for="r1">radio1</label>
<input type="radio" name="radio" value="radio2" id="r2">
<label for="r2">radio2</label>
</form>
<script>
function showValues() {
var str = $( "form" ).serialize();
$( "#results" ).text( str );
}
$( "input[type='checkbox'], input[type='radio']" ).on( "click", showValues );
$( "select" ).on( "change", showValues );
showValues();
</script>
产生类似
的东西single=Single&multiple=Multiple&multiple=Multiple2&multiple=Multiple3&check=check2&radio=radio1
似乎multiple
被覆盖了两次。那我该如何访问多个值?
或者有比使用序列化更现代的方法吗?
答案 0 :(得分:1)
在选择名称中添加方括号[]
。然后$_GET['multiple']
将被视为数组。
<select name="multiple[]" multiple="multiple">
有关详细信息,请参阅How do I get all the results from a select multiple HTML tag?。
答案 1 :(得分:0)
JQuery正在做它应该做的事情。
https://stackoverflow.com/a/5118766/378151
在HTTP GET上使用多个值时,每个值都会多次列出。
访问服务器上的值取决于您使用的服务器技术。如果您使用的是PHP,请查看我链接的SO答案。
一个基本选项是获取请求的URL,评估查询字符串,在&
上标记,然后再次在=
上拆分并查看密钥。如果键是'multiple`,则将值添加到值数组中。