在Codeigniter中使用页面外刷新删除记录不起作用

时间:2018-08-07 06:05:07

标签: ajax codeigniter codeigniter-3 codeigniter-query-builder

您好,我试图从datatable中删除记录,而在codeigniter中没有页面刷新功能,但是我使用了ajax我不知道在哪里做错了它没有删除记录

以下是我的观点:

    <tbody>
                        <?php
                        if (!empty($employees)) {
                            foreach ($employees as $emp) {
                                 ?>

                                <tr>
                                    <td><?php echo $emp->emp_name; ?></td>
                                    <td><?php echo $emp->salary; ?></td>
                                    <td class='text-center'>
                                    <button type="submit" class="btn btn-info btn-xs confirmation" name="login"><i class='fas fa-edit'></i></button>
                                    </td>

                                    <td class='text-center'>
                                     <button type="submit"  onClick="return ConfirmDelete()" class="btn btn-danger btn-xs confirmation empdelete" id="<?php echo $emp->id;?>"><i class='fas fa-times'></i></button>
                                     </td>
                               </tr>

                                <?php
                            }
                        }
                        ?>
                    </tbody>
    <script>
$(document).ready(function(){
$(".empdelete").click(function(e){
    alert();
   e.preventDefault(); 
    $.ajax({
      alert();
      type: "POST",
      url: "<?=site_url('Employee/delete');?>",
      cache: false,
      data: {id:$(this).attr("id")}, // since, you need to delete post of particular id
      success: function(data) {
         if (data){
            alert("Success");
         } else {
             alert("ERROR");
         }
         return false;

       }
   });
});
});
</script>

这是我的控制者:

  function delete()  
  {
    $id = $this->input->post('id'); // get the post data
    $empdelete=$this->Emp_model->delete($id);
    if($empdelete){
        echo true;
    } else {
        echo false;
    }
 }

这是我模型的方法删除:

function delete($id)
{ 
$sql  = "DELETE FROM employees WHERE id=?";
return $this->db->query($sql,array($id));

}

任何人都可以帮助我如何在不刷新页面的情况下删除我的记录。

谢谢。

2 个答案:

答案 0 :(得分:1)

尝试一下:

$(document).ready(function () {
        function ConfirmDelete() {
            var x = confirm("Are you sure you want to delete?");
            if (x)
                return true;
            else
                return false;
        }
        $(".empdelete").click(function (e) {
            var obj = $(this);
            e.preventDefault();
            //alert(); what's this do?
            if (ConfirmDelete() == false) {
                return false;
            }
            $.ajax({
                //alert(); this can't go here
                type: "POST",
                url: "<?php echo site_url('Employee/delete'); ?>",
                cache: false,
                data: {id: $(this).attr("id")},
                success: function (data) {
                    console.log('ajax returned: ');
                    console.log(data);
                    if (data) {
                        obj.closest('tr').remove();
                        alert("Success");
                    } else {
                        alert("ERROR");
                    }
                    return false;
                }
            });
        });
    });

并删除HTML onClick:

<button type="submit" class="btn btn-danger btn-xs confirmation empdelete" id="<?php echo $emp->id;?>"><i class='fas fa-times'></i></button>

答案 1 :(得分:1)

希望这对您有帮助:

您的按钮应如下所示:

<div v-for="product in filteredProducts">

您的ajax代码应如下所示:

<button type="button"  onClick="return ConfirmDelete(this)" class="btn btn-danger btn-xs confirmation empdelete" data-id="<?=$emp->id;?>"><i class='fas fa-times'></i></button>

您的控制器应如下所示:

function ConfirmDelete(obj) 
{ 
  var x = confirm("Are you sure you want to delete?"); 
  if (x == true) 
  {
    var id = $(obj).data('id');
    alert(id);
    if (id != '')
    {
      //do you ajax here
        $.ajax({
          type: "POST",
          url: "<php echo site_url('Employee/delete'); ?>",
          cache: false,
          data: {'id': id},
          success: function (data) {
              console.log('ajax returned: ');
              console.log(data);
              if (data) {
                  alert("Success");
              } else {
                  alert("ERROR");
              }
              return false;
          }
      });
    }
  }
  else
  {
   return false;
  }
}

您的删除方法应如下:

function delete()  
{
    $id = $this->input->post('id'); // get the post data
    $empdelete = $this->Emp_model->delete($id);
    if($empdelete)
    {
        echo true;
    } else 
    {
        echo false;
    }
    exit;
}