这是一个非常奇怪的问题。我有一个包含几个字段的表单,其中一个是多选,如下所示:
<select name="age_group[]" multiple="multiple">
// options
</select>
发布到服务器时,$_POST
数组中多选的键如下所示:
age_group[
为什么右括号被剥离?此外,由于某种原因,该字段未保存为数组,而是字符串。当console.log()
我用 jQuery 将对象发送到服务器时,一切看起来都很好,而且那个字段确实是一个数组。
POST 标头:
POST /ajax.php HTTP/1.1
主机:ds.local
连接:keep-alive
内容长度:188
接受:application/json, text/javascript, / ; q=0.01
来源:http://ds.local
X-Requested-With:XMLHttpRequest
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) > Chrome/29.0.1547.66 Safari/ 537.36
内容类型:应用程序/x-www-form-urlencoded;charset=UTF-8
引用:http://ds.local/
接受编码:gzip,deflate,sdch
接受语言:en-US,en;q=0.8
Cookie:PHPSESSID=9bniv5i558oslo6ne4ev59hdp6
POST 数据,人类可读
action: search
entity: DrugStats
data[name]:
data[substance]:
data[atc_code]:
data[year]: n/a
data[gender]: n/a
data[age_group[]][]: 3
data[county]: n/a
POST 数据,编码
action=search&entity=DrugStats&data%5Bname%5D=&data%5Bsubstance%5D=&data%5Batc_code%5D=&data%5Byear%5D=n%2Fa&data%5Bgender%5D=n%2Fa&data%5Bage_group%5B%5D%5D%5B%5D=3&data%5Bcounty%5D=n%2Fa
处理代码
$.ajax({
url: 'ajax.php',
type: 'post',
dataType: 'json',
data: {
'action': 'search',
'entity': $(entity).data('entity'),
'data': data,
'page': page
},
success: function(data) {
// code
},
complete: function() {
// code
}
});