Получить значение скрытого ввода в $ _POST - PullRequest
0 голосов
/ 19 ноября 2018

Я назначил скрытый ввод в форму, в которой будут храниться значения отмеченных флажков (эта часть работает нормально, как видно на этом рисунке):

enter image description here

Значение этого скрытого ввода преобразуется в строку. Кстати, чтобы выполнить его разнесение позже.

Когда я пытаюсь получить к нему доступ в 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;
}

1 Ответ

0 голосов
/ 19 ноября 2018

Зачем использовать JS для добавления значений и сохранения в виде строки, если вы можете просто получить к ним доступ в виде массива в PHP, если вы используете правильное именование?

<form name="demo" method="POST" action="<?php print($_SERVER['PHP_SELF']); ?>">
<input type=checkbox name="checkbox[]" value="val1"> check 1<br />
<input type=checkbox name="checkbox[]" value="val2"> check 2<br />
<input type=checkbox name="checkbox[]" value="val3"> check 3<br />
<input type=submit name=submit value="submit">
</form>

Тогда в PHP вы можете получить доступ к значениям:

<?php

  print("Selected checkbox values were: ".implode(",",$_POST['checkbox']))."<br />");

?>
...