私は次の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[]">
最初の 2 つのオプションを確認し、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-Variable を取得します。
$options = $_POST['options'];
$options を echo すると、次のようになります。
"options[]=options_1&options;[]=options_2"
2 番目の括弧のペアの前にあるこのセミコロンはどこから来たのですか? これは私を夢中にさせています。
urldecodeとrawurldecodeだけでなく、POST データでも既にutf8_decodeを使用しています。何も変わりません。また、次のように ajax 呼び出しで角かっこをエスケープしました。
data: {
'options':$('input[name="options\\[\\]"]').serialize()
},
それも役に立ちませんでした。アイデアはありますか?