Удаление пользователя из БД с помощью Ajax

Столкнулся с проблемой.Пробую реализовать удаление зарегистрированных пользователей кнопкой с попощью Ajax.Все работает нормально,но при обновлении страницы,запись возвращается обратно на свое место.Как это обойти или избежать? Заранее спасибо за внимание!

 <?


                  require_once 'mysql.php';
    
                  // Получаем и выводим всех пользователей
                  $sql = 'SELECT * FROM `users` ORDER BY `id` DESC';
                  $query = $pdo->prepare($sql);
                  $query->execute();
                  $users = $query->fetchAll(PDO::FETCH_ASSOC);
                  foreach($users as $el) {
                   
                    echo '<div class="alert alert-info" id="'.$el['id'].'">
                      <b>Имя:</b> '.$el['name'].', <b>логин:</b> '.$el['login'].'
                      <button onclick="deleteUser(\''.$el['id'].'\')" class="btn btn-danger">Удалить</button>
                    </div>';
                  }
                ?>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
                <script>
            
                function deleteUser(id) {
                  $.ajax({
                    url: 'user.php',
                    type: 'POST',
                    cache: false,
                    data: {'id' : id},
                    dataType: 'html',
                    success: function(data) {
    
                      $('#' + id).remove();
                            document.location.reload(true);
                    }
                  });
                }
                </script>

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

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

Вот код на реализацию кнопки "Удалить" из БД

<?php

$id = $_POST['id'];

require '../lib/mySql.php';

$sql = 'DELETE FROM users WHERE id=?';
$query = $pdo->prepare($sql);
$query->execute([$id]);
→ Ссылка
Автор решения: Denis Lopatin

Вы просто удаляете элемент из объектной модели документа и это никак не отображается на базе данных. В данном случае вам нужно принять и обработать запрос от JavaScript отправленный как xhr или fetch, не помню, что там от jQuery прилетит уже.

Причем в PHP вы рискуете не получить значения в суперглобальном массиве $_POST, то есть следующий код не отработает:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // логика удаления пользователя из базы
}

в том случае, если вы используете не formData, а например JSON.stringify(data) в теле сообщения.

Дело в том, что отправляю сетевые запросы через js в $_POST может ничего не записаться (все зависит от того, как именно их отправлять). Тут можно изменить точку входа, то есть создать файл delete-user.php и отсылать запросы туда. В этом файле использовать инструкцию ввода:

$data = son_decode(file_get_contents('php://input'), true);
var_dump($data);

Ну и далее уже будет ясно что к чему. В jQuery запросе dataType: 'json' а в само поле data - JSON.stringify(data). Возможно, тут и не без ошибок в моем примере к сожалению ведь писал по памяти на скорую руку, но главное тут это дать тебе направление. Копай туда)

→ Ссылка