Ich habe das folgende 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[]">
Ich überprüfe die ersten beiden Optionen und sende sie über Ajax in jQuery an den Server:
$.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 zeigt mir die Daten, die gepostet wurden:
Optionen options%5B%5D=options_1&options%5B%5D=options_2
So weit, so gut.
In myfile.php erhalte ich die POST-Variable wie folgt:
$options = $_POST['options'];
Jetzt, wenn ich echo $options erhalte ich dies:
"options[]=options_1&options;[]=options_2"
Woher kommt das Semikolon vor dem zweiten Klammerpaar? Das macht mich wahnsinnig.
Ich habe bereits utf8_decode zu den POST-Daten sowie urldecode y rawurldecode . Es ändert sich nichts. Ich habe auch die eckigen Klammern im Ajax-Aufruf wie folgt ausgeblendet:
data: {
'options':$('input[name="options\\[\\]"]').serialize()
},
Das hat auch nicht geholfen. Hat jemand eine Idee?