小编And*_*eas的帖子

如果我在名称中带方括号的输入上使用jQuery serialize(),为什么会出现这个分号?

我有以下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[]">  
Run Code Online (Sandbox Code Playgroud)

我检查前两个选项并通过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
    }
});
Run Code Online (Sandbox Code Playgroud)

Firebug向我显示已发布的数据:

期权 期权%5B%5D = options_1&options%5B%5D = options_2
到目前为止,非常好.

在myfile.php中我得到了如下的POST变量:

$options = $_POST['options'];
Run Code Online (Sandbox Code Playgroud)

现在,当我回显$ options时,我得到了这个:

"options[]=options_1&options;[]=options_2"
Run Code Online (Sandbox Code Playgroud)

第二对括号前面的分号是从哪里来的?这真让我抓狂.

我已经在POST数据上使用了utf8_decode以及urldecoderawurldecode.没有什么变化.我还逃过了ajax调用中的方括号,如下所示:

data: {
    'options':$('input[name="options\\[\\]"]').serialize()
},
Run Code Online (Sandbox Code Playgroud)

这也没有帮助.任何人的想法?

php ajax jquery serialization brackets

8
推荐指数
1
解决办法
1188
查看次数

标签 统计

ajax ×1

brackets ×1

jquery ×1

php ×1

serialization ×1