使用 AJAX 和 PHP 删除用户记录时遇到的问题

Issue Faced while deleting user record using AJAX and PHP

场景:

我使用AJAX删除记录,PHP作为编程语言。 AJAX 部分如下:

这里的$('#id')是按钮的id,它包含了用户id的值,在这部分的帮助下动态地从数据库中获取:id='.$d['ID'].' 在前端实现。

<script>
    function deleteRecord() {
        var var1 = $('#id').html();    
        var result = confirm("Do you want to delete this Record?");
        if(result){
            //call ajax
             $.ajax({
                 url: '<?php echo base_url();?>index.php/Device/delete', 
                 type: 'POST',
                 data: {
                 id: var1
                 },     
                 success: function(result){
                 $("#id").html(result);
                 alert('You have successfully deleted the user.');
                 },
                 error(e){
                 alert('Problem while interacting to the server.');
                 }
             });
            }
        else{
            console.log('Operation Cancelled.');
        }
    }
    </script>

这是Button删除记录的前端部分。 我已经使用 id='.$d['ID'].' 从数据库动态获取 id 的值。

<td> <button class="btn" type="submit" onclick="deleteRecord()" id='.$d['ID'].'>Delete 
</button> </td>

这是url中提到的AJAX:

url: '<?php echo base_url();?>index.php/Device/delete'

在上面的URL中,DeviceController的名字,deletecontroller 的方法,如下所示:

public function delete($id = '') {
    $login = $_SESSION['username'];
    if (! in_array($login, $this->main_model->get_authorized_users())) {
        $redirect = site_url('device');
        redirect($redirect, 'refresh');
    }
    if ($this->input->post('submit')) {
        $username = $this->input->post('username');
        $deviceid = $this->input->post('deviceid');
        if ($deviceid == null || $username == null || $login == null) {
            $redirect = site_url('device');
            redirect($redirect, 'refresh');
            return;
        }
    } else {
        if ($id == '') {
            $redirect = site_url('device');
            redirect($redirect, 'refresh');
        }
        $res = $this->device_model->delete();
        $data['action'] = 'delete';
        $data['id'] = $id;
        $data['result'] = $this->device_model->get_device($id);
        $data['body'] = $this->load->view('register_view', $data, true);
        $this->load->view('template', $data);
    }
}

这是模型部分:

function delete(){
    $username = $this->input->get('username');
    $deviceid = $this->input->get('deviceid');
    $id = $this->input->get('id');
    $language= $this->input->get('language');
    $deleted_by=$_SESSION['username'];
    $sql = "DELETE FROM devices
    WHERE id = $id";
    $query = $this->db->query ( $sql );
    //log update
    $this->log_device_delete($id,$username,$deviceid,$deleted_by);
}

当前输出:

  1. 当按下DELETE按钮时,会显示确认框
  2. 确认框中,询问“是否要删除此记录?”。

面临的问题:

当用户按下 确定 按钮时,将显示名为“您已成功删除用户。”的消息 但是记录没有被删除.

所需的解决方案:

当用户按下确认框上的确定按钮时,用户记录应该被删除。

这里需要什么修正?

非常感谢您的建议。

您正在 id 属性中使用 $d['ID']。但它需要在某些字段中作为值放置。

您需要更新的代码是:

<td> 
    <button class="btn" type="submit" onclick="deleteRecord(this)" data-id="<?php echo $d['ID']; ?>">Delete</button>
</td>

并在 JS 中更新为:

function deleteRecord(e) {
    var var1 = $(e).data("id"); 

尝试数据属性为

<td> <button class="btn" type="submit" onclick="deleteRecord()" data-id=".$d['ID'].">Delete 
</button> </td>

然后在 deleteRecord 函数中获取该值作为

   var var1 = $(this).attr("data-id");

您确定在 SQL 查询中输入了正确的 ID 吗?

你说:

When user presses the OK button then the message called "You have successfully deleted the user." is displayed but the record is not deleted.

您没有错误,AJAX 调用了成功函数。都逼我考虑ID问题