Удаление записей через PHP без перезагрузки страницы (с использованием AJAX) - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь удалить некоторые записи из таблицы базы данных через PHP без перезагрузки страницы (используя AJAX). Сначала я печатаю всю информацию в таблице, а затем пользователь может нажать кнопку delete, которая удалит запись. Однако у меня проблемы с передачей записи id методу AJAX.

ListProducts.php

create connection
...
$result = mysqli_query($conn, $sql);

echo "<table border = '1' style = 'border-collapse:collapse;'>";
echo "<tr><th>UserID</th><th>Username</th><th>Action</th></tr>";

if (mysqli_num_rows($result)>0){
    while ($row = mysqli_fetch_assoc($result)){
        echo "<tr><td>".$row['id']."</td><td>".$row['username']."</td><td><input type = 'submit' onclick = 'delete_record()' value = 'Delete' id = '".$row['id']."'></td></tr>";
    }
}

Затем, на той же странице, есть функция AJAX. Я дал каждому input полю соответствующий идентификатор, и я пытаюсь выбрать его с помощью jQuery

function delete_rekord(){
    var id = "Default";
    $(document).ready(function(){
        $("input").click(function(){
            id = $(this).attr('id');
        });
    });
    alert(id); //Test; will print DEFAULT
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function (){
        if (this.readyState == 4 && this.status == 200){
            alert("Deleted user with ID: " + this.responseText);
        }
    }
    xhttp.open("GET", "delete.php?id="+id, true);
    xhttp.send();
}

По окончании delete.php Я просто удаляю запись и печатаю идентификатор удаленной записи, которую я собираю в этой функции в виде responseText, и распечатываю сообщение. Я поставил тест alert(id) и кажется, что значение var id оставаясь по умолчанию, как я его инициализирую. Таким образом, ошибка должна заключаться в том, что я получаю идентификатор через jQuery. Есть идеи, как решить эту проблему?
Спасибо

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Вы должны вставить переменную id в функцию удаления

echo "<tr><td>".$row['id']."</td><td>".$row['username']."</td><td><input type='submit' onclick='delete_record(".$row['id']."); return false;' value = 'Delete' id = '".$row['id']."'></td></tr>";`

в вашем js

function delete_record(id){ // also rename it to delete_record your fn name was delete_rekord
  alert(id); //Test; will print the correct ID
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function (){
    if (this.readyState == 4 && this.status == 200){
        alert("Deleted user with ID: " + this.responseText);
    }
  }
  xhttp.open("GET", "delete.php?id="+id, true);
  xhttp.send();
}
0 голосов
/ 25 июня 2018

Передать значение Id в качестве функционального параметра

<input type ='submit' onclick = 'delete_record(".$row['id'].")' value = 'Delete' id = '".$row['id']."'>

function delete_record(id){
    alert(id);
}
0 голосов
/ 25 июня 2018

передайте $ row ['id'] в вашу функцию javascript, как показано ниже. В вашем HTML измените код, как показано ниже

<input type = 'submit' onclick = 'delete_record(".$row['id'].")' value = 'Delete' id = '".$row['id']."'>

В вашем javascript измените функцию следующим образом

function delete_rekord(rowid){

   var id = rowid;

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...