简体   繁体   中英

Add a <tr> element to dynamic table, dynamically without a page refresh, php jquery

I am trying to add a dynamic row to the existing table on click of button, whose rows are dynamically created using output from PHP script.

I doing an ajax call to the script insert_tr.php which returns me a TR element in the same format as the existing table with the data.Data is returned appropriately

But unfortunately, the <tr> row is not being added to the table dynamically but adds only after a page refresh.

PHP file code :

   <div id="v_div">
    <table class="table table-bordered table-striped" >
     <thead>
        <th class='col-md-2'>name</th>
            <th class='col-md-2'>number</th>
     </thead>

     <tbody>
    <?php  
            while ($data = pg_fetch_assoc($ret)) {

              echo 
              "<tr id=tr_".$data['sr_number'].">
                <td class='td_topic' id=title:".$data['number']." >".trim($data['name'])."</td>
                <td class='td_topic' id=title:".$data['number']." >".trim($data['number'])."</td>
            <td class='td_topic' id=title:".$data['number']." ><button class='btn btn-info check1' type=button title='Add Entry'>Add Entry</button></td>
          </tr>";
    ?> 
       </tbody>
    </table>
    </div>

Javascript :

$(document).ready(function() {
  $("#v_div").on('click', '.check1', function() {
    var field_userid = $(this).parent().attr("id");
    var value = $(this).text();
    $.post('insert_tr.php', field_userid + "=" + value, function(data) {
      if (data != '') {
        $(this).closest("tr").after(data);

      }
    });

  });
});

All I want to do is add the row immediately after the current TR am on ,dynamically without a page refresh, which serves the ultimate use of an ajax call.

The reference to this is not the button that was clicked.

$(this).closest("tr").after(data);

Store a reference to the row outside the Ajax call.

$(document).ready(function() {
  $("#v_div").on('click', '.check1', function() {
    var field_userid = $(this).parent().attr("id");
    var value = $(this).text();
    var row = $(this).closest("tr");
    $.post('insert_tr.php', field_userid + "=" + value, function(data) {
      if (data != '') {
        row.after(data);
      }
    });

  });
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM