我有以下
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_1& options [] = options_2
到现在为止还挺好.
在myfile.PHP中我得到了如下的POST变量:
$options = $_POST['options'];
现在,当我回显$options时,我得到了这个:
"options[]=options_1&options;[]=options_2"
第二对括号前面的分号从哪里来?这真让我抓狂.
我已经在POST数据上使用了utf8_decode以及urldecode和rawurldecode.没有什么变化.我也逃过了ajax调用中的方括号,如下所示:
data: { 'options':$('input[name="options\\[\\]"]').serialize() },
这也没有帮助.任何人的想法?
我有这个确切的问题,我只能通过使用“.serializeArray()”让它工作,我希望这是你正在寻找的.
data: { 'options':$('input[name="options[]"]').serializeArray() },
对我来说,这将以与GET请求相同的格式输出标准字符串.