Я назначил скрытый ввод в форму, в которой будут храниться значения отмеченных флажков (эта часть работает нормально, как видно на этом рисунке):
Значение этого скрытого ввода преобразуется в строку. Кстати, чтобы выполнить его разнесение позже.
Когда я пытаюсь получить к нему доступ в PHP через var_dump(['distribution'])
, я получаюэти данные: string(0) ""
.
Код на стороне php:
if(isset($_POST['distribution'])){
var_dump($_POST['distribution']);
die;
}
на всякий случай, вот мой HTML: <input type="hidden" name="distribution[]" />
и вот мой JS:
function isChecked(){
let distributionEL = document.querySelector("[name='distribution[]']");
console.log(distributionEL.value);
sendingLists.forEach(function(list) {
let sendSMSArr = distributionEL.value.split(',');
if(list.checked == true){
sendSMSArr.push(list.value);
} else {
let index = sendSMSArr.indexOf(list.value)
if (index > -1) {
sendSMSArr.splice(index, 1);
}
}
distributionEL.value = sendSMSArr.join(',');
});
}
Обновление:
Я использовал name='distribution[]'
при создании входов и его работе, но когда кто-то использует панель поиска, которая создает флажки в соответствии с запросом, он не будет накапливать значения из предварительного поиска и пост-поиска.
my ajax:
const resToHtml = res => {
// create a virtual fragment where we will create all the HTML in
let resultDiv = document.createElement('div');
// iterates on each option
res.forEach(({
sendingListName,
sendingListID
}) => {
// create an <li>
let liEl = document.createElement('li');
// create a <span> and an <input>
let spanEl = document.createElement('span');
let inputEl = document.createElement('input');
// create class attribute and append it to input
let elementClass = document.createAttribute("class");
let nameClass = document.createAttribute("name");
elementClass.value = "sending-lists";
nameClass.value = "distribution[]";
inputEl.setAttributeNode(elementClass);
inputEl.setAttributeNode(nameClass);
// the <span> will hold the visible text
spanEl.textContent = sendingListName;
// the <input> will be a checkbox with a value
inputEl.type = "checkbox";
inputEl.value = sendingListID;
inputEl.name = 'distribution[]';
// put the <input> and the <span> inside the <div>
liEl.appendChild(inputEl);
liEl.appendChild(spanEl);
// add the <li> into the <div>
resultDiv.appendChild(liEl);
})
// apply all the elements into the <div>
listREl.innerHTML = '';
listREl.innerHTML = resultDiv.innerHTML;
}