我有以下 HTML:
<input type="checkbox" id="options_1" value="options_1" name="options[]">
<input type="checkbox" id="options_2" value="options_2" name="options[]">
<input type="checkbox" id="options_3" value="options_3" name="options[]">
我检查前两个选项并通过 jQuery 中的 ajax 将其发送到服务器:
$.ajax({
type: "POST",
url: "myfile.php",
data: {
'options':$('input[name="options[]"]').serialize()
},
dataType: 'json',
beforeSend: function(){
//do some stuff
},
success: function(msg){
//do some stuff
}
});
Firebug 向我展示了已发布的数据:
options options%5B%5D=options_1&options%5B%5D=options_2
到目前为止,一切都很好。
在 myfile.php 我得到这样的 POST 变量:
$options = $_POST['options'];
现在,当我回显 $options 时,我得到了这个:
"options[]=options_1&options;[]=options_2"
第二对括号前面的分号是从哪里来的?这真让我抓狂。
我已经在 POST 数据以及urldecode和rawurldecode上使用了utf8_decode。没有什么变化。我还像这样在 ajax 调用中转义了方括号:
data: {
'options':$('input[name="options\\[\\]"]').serialize()
},
那也没有帮助。有什么想法吗?