mysql - Actions links not working while fetching data from database using ajax in php

Screenshot for incorrect output is attached. Actions links are not working.][1]]2I am using ajax to fetch data from mysql database in php and populating the table with returned data. HTML table is being populated with data but action links ( edit,view and delete) are not working.

index.php

<div id="employee_table">  
                          <table class="table table-bordered text-center">  
                            <thead class="bg-dark text-center text-white">
                               <tr>  
                                    <th>Employee Name</th> 
                                    <th>Address</th>         
                                    <th>Gender</th> 
                                    <th>Designation</th>         
                                    <th>Age</th>         
                                    <th>Photo</th>                                                  
                                    <th>Edit</th>  
                                    <th>View</th>  
                                    <th>Delete</th>  
                               </tr>
                            </thead>
                            <tbody id="tableBody">                          
                               <?php  
                               
                               $query = "SELECT * FROM tbl_employee ORDER BY name";  
                               $result = mysqli_query($connect, $query);
                               while($row = mysqli_fetch_array($result))  
                               {  
                               ?>  
                               <tr>  
                                    <td><?php echo $row["name"]; ?></td>  
                                    <td><?php echo $row["address"]; ?></td>  
                                    <td><?php echo $row["gender"]; ?></td>  
                                    <td><?php echo $row["designation"]; ?></td>  
                                    <td><?php echo $row["age"]; ?></td>
                                    <td><img src='<?php echo $row["image"]; ?>' width=80 height=30/></td>    
                                    <td><a  id="<?php echo $row["id"]; ?>" class="btn btn-warning btn-sm edit_data"/><i class="fa fa-pencil-square" aria-hidden="true"></i></a></td>  
                                    <td><a  id="<?php echo $row["id"]; ?>" class="btn btn-info btn-sm view_data"/><i class="fa fa-eye" aria-hidden="true"></i></a></td>  
                                    <td><a  id="<?php echo $row["id"]; ?>" class="btn btn-danger btn-sm  del_data"/><i class='fa fa-trash' aria-hidden='true'></i></a></td>  
                               </tr>  
                               <?php  
                               }  
                               ?>
                           <tbody>                             
                          </table>  
                     </div>  

At this point of time, Edit,View and Delete links are working. but when inserting,updating or deleting data, then returned links are not working.

scripts.js

function showUsers(){
           //alert("hello");
         $.ajax({  
                     url:"fetchusers.php",  
                     method:"GET",
                     dataType:"json",  
                     success:function(data){                         
                          $('#tableBody').html(data); 
                     }  
                });  
          }

fetchusers.php

<?php  
 
  require 'db.php';
  $output="";  
  $query = "SELECT * FROM tbl_employee order by name";  
      $result = mysqli_query($connect, $query);  
      //$row = mysqli_fetch_array($result);         
    while($row=mysqli_fetch_array($result)){
      $output .=
                "<tr><td>".
                     $row['name'].
                     "</td> <td>".
                     $row['address'].
                     "</td><td>".
                     $row['gender'].
                     "</td><td>".
                     $row['designation'].
                     "</td><td>".
                     $row['age'].
                     "</td><td><img src=".
                     $row['image'].
                     " width=80 height=30/></td><td><a  id=".
                     $row['id'].
                     "class='btn btn-warning btn-sm edit_data'><i class='fa fa-pencil-square' aria-hidden='true'></i></a></td><td><a  id=".
                     $row['id'].
                     "class='btn btn-info btn-sm view_data'><i class='fa fa-eye' aria-hidden='true'></i></a></td><td><a  id=".
                     $row['id'].
                     "class='btn btn-danger btn-sm del_data'><i class='fa fa-trash' aria-hidden='true'></i></a></td></tr>";
                     
        
    }
    if($output){    
       echo json_encode($output);
    }
    else{
         echo "No data found.";
    }
    
 ?>

At this point of time, Edit,View and Delete links are not working. No event is happening. data is being populated in html table.

Answer

Solution:

$output is not correctly formatted, Please update it to the following.

$output .=
  "<tr>".
  "<td>".$row['name']."</td>".
  "<td>".$row['address']."</td>".
  "<td>".$row['gender']."</td>".
  "<td>".$row['designation']."</td>".
  "<td>".$row['age']."</td>".
  "<td><img src='".$row['image']."' width=80 height=30/></td>".
  "<td><a id='".$row['id']."' class='btn btn-warning btn-sm edit_data'><i class='fa fa-pencil-square' aria-hidden='true'></i></a></td>".
  "<td><a id='".$row['id']."' class='btn btn-info btn-sm view_data'><i class='fa fa-eye' aria-hidden='true'></i></a></td>".
  "<td><a id='".$row['id']."' class='btn btn-danger btn-sm del_data'><i class='fa fa-trash' aria-hidden='true'></i></a></td>".
  "</tr>";

Answer

Solution:

Instead of

echo json_encode($output);

replace with

echo $output;

Your $output variable is not an array but a string contains a html

Source