I'm currently trying to send data with html input checkbox to my php page.
There is how I generate my input :
- Sending ajax call and get back data from database
- Create input with callback
- Add input to my form
- If user send the form, we're getting in PHP the input values
When user's send data, if I do :
die(var_dump($_POST));
I'll have the key, but no value. here is my result
$_POST[
"key1" => "value",
"key2" => "value",
"WantedKey[]" => null // the key I need
checkbox are generated using JavaScript
There is the html result when DOM is loaded :
<form method="post" action="#" enctype="multipart/form-data" id="foo">
...
<div id="zoneFoo">
<br>
<div>
<label>foo</label>
<input id="test1" type="checkbox" name="test[]" value="test1" style="width:26px;" checked="checked">test1
<input id="test2" type="checkbox" name="test[]" value="test2" style="width:26px;" checked="checked">test2
<input id="test3" type="checkbox" name="test[]" value="test3" style="width:26px;" checked="checked">test3
<input id="test4" type="checkbox" name="test[]" value="test4" style="width:26px;" checked="checked">test4
<input id="test5" type="checkbox" name="test[]" value="test5" style="width:26px;">test5
<div>
</div>
...
</form>
I also tryed to "hard-code" theses input, but I have the same result: $_POST key exist but values are still missing ...
Do you have any suggestions about the problem ?
Thanks a lot to read this, and special thanks for help me ^^
Edit:
here is my javascript (Modified values because it's working code)
$.get("foo/foo.php", {
// some data
}, function(data){
// Data return a string like "test1;test2;test3"
let chaine = `<div><label> Title </label>`;
const tab = ["test1", "test2", "test3", "test4", "test5"];
tab.forEach(function(element){
if(data.indexOf(element) != -1){
chaine += `<input id='${element}' type='checkbox' name='test[]' value='${element}' style='width:26px;' checked />${element}`;
} else {
chaine += `<input id='${element}' type='checkbox' name='test[]' value='${element}' style='width:26px;' />${element}`;
}
});
$("#myDiv").html(chaine);
}
);