Как передать значение переменной JS в PHP SQL?

есть ссылка, открывающая модальное окно

<a id="updatedetail" href="" data-id="1" data-toggle="modal" data-target="#upDetail">Изменить</a>

есть JS-код, принимающий data-id в переменную

document.querySelectorAll('#updatedetail').forEach(e => {
  e.addEventListener('click', () => {
    var showid = e.dataset.id;
  })
})

В модальном окне запускается вывод данных из БД на php

<?php 
  $detail_object = mysqli_query ($connection, "SELECT * FROM `detail` WHERE `id`='значение переменной showid'");
  $detail = mysqli_fetch_assoc ($detail_object);
?> 

Как передать значение переменной showid из JS в значение WHERE id = '...' ?


Ответы (1 шт):

Автор решения: Pr0gramm1st

Можно это реализовать с помощью объекта XMLHttpRequest, который позволит без перезагрузки страницы получить данные. Пример:

document.querySelectorAll('#updatedetail').forEach(e => {
  e.addEventListener('click', () => {
    var showid = e.dataset.id;
    const request = new XMLHttpRequest();
    const url = '<путь_к_вашему_файлу-обработчику>'; //где у вас делается запрос к БД
    const data = {id: showid}

    request.open("POST", url, true);
    request.setRequestHeader("Content-type", "text/plain; charset=UTF-8");
    request.addEventListener("readystatechange", () => {
        if (request.readyState === 4 && request.status === 200) {
            modal.innerHTML = request.responseText; //Здесь, собственно, выводим данные в модальное окно
        } else {
            console.log(response); //Здесь можно сделать обработку на случай ошибок
        }
    });
    request.send(data);
  });
});

P.S. и лучше, конечно же, модальное окно открывать тогда, когда данные в него уже были помещены, а не сразу по клику на ссылку.

То есть в теле условия

if (request.readyState === 4 && request.status === 200) {
    modal.innerHTML = request.responseText; //Поместили данные
    modal.open(); //Открыли модальное окно
}
→ Ссылка