0

I have a app that shows list of income items where each item is inside a li with a id= "number,item description and little trash icon inside the li. so far i have a code that calls a ajax when the user clicks the trash icon that removes the mysql row using a php script called by ajax, however i am not able to remove the li with a unique id without refreshing the page when i click on trash icon

this is a piece of the code that i have so far

<ul>
  <?php  $sqlinc = "SELECT * FROM transactions WHERE username = '$username' AND transaction = 'income'";
  $resultinc = mysqli_query($conn, $sqlinc);
  if (mysqli_num_rows($resultinc) > 0) {
  // output data of each row
  while($rowinc = mysqli_fetch_assoc($resultinc)) {

echo '<li class="delli" id="'.$rowinc['id'].'">
        <button id="" class="fl delbutton" onclick="">'.  $rowinc['memo'].'</button>
        <span class="fr">
        <button>'. $rowinc['amount'].'</button>
        <button class="delbutton" id="'.$rowinc['id'].'">
        <i class="fa fa-trash">'.$rowinc['id'].'</i>
        </button>
        </span>
      </li> '; }}?>

<!--  <li>
        <button class="fl" onclick="changeIncomeName()">name</button>
        <span class="fr">
        <button>100</button>
        <button data-delete="item">
        <i class="fa fa-trash"></i>
        </button>
        </span>
      </li> -->
</ul>

<!-- 'script to remove income row from mysql' section --> 
<script>
function aler() {
  alert("Transaction submited!");
</script>
<!-- 'delete mysql row' section --> 
<script type="text/javascript">
$(document).ready(function() {
$('.delbutton').click(function() {

var id = $(this).attr("id");
if (confirm("Are you sure you want to delete this Member?")) {
  $.ajax({
    type: "POST",
    url: "delete_entry.php",
    data: ({
    id: id
  }),
cache: false,
success: function(html) {
  $('#id li').remove()

  }
});
} else {
  return false;
}
});
});
</script>
<!-- 'end of planned page income list' section -->  

but it only gets rid of the li after i refresh the page

David
  • 208,112
  • 36
  • 198
  • 279
  • 2
    In your browser's debugging tools, on the development console, are there any errors before or after the AJAX operation? Does the AJAX operation succeed? When you use the browser's script debugger and place a breakpoint on `$('#id li').remove()`, is it ever invoked? Does `#id li` actually match any element in your markup? (Did you mean to use the *variable* `id` instead of the *hard-coded* `#id` selector?) – David Jun 26 '23 at 18:38
  • when I look at the on Chrome it does not show any errors and the part of removing the MySQL row when Ajax call it works , and when you say browser debugging tool, is that a tool in Chrome browser or the ide that i am using Visual Studio Code ,? – Marcos Almeida Jun 26 '23 at 19:43
  • The script debugger in this case would be the one in Chrome, though you can certainly use any debugger you like. *As a guess* I suspect that `'#id li'` is simply the wrong selector. What is the exact HTML element that you are trying to select? – David Jun 26 '23 at 19:45
  • the li id is dynamically created each with the id number that corresponds to the MySQL row id so that I could use the li id as a jquery selector to use the remove function with, I also tried to use $("#with-the-li-id-numver").remove(_) but it did work either or perhaps I placed that command in the wrong location in the ajax code I assume – Marcos Almeida Jun 26 '23 at 20:09
  • Well, if your intent was to use the *variable* `id` in that selector, that's not what you did. Your selector is the *literal string* `'#id li'`, which is targeting any `
  • ` element *within* the single element on the page with `id="id"`. Are you just asking how to use a variable in a string in JavaScript?
  • – David Jun 26 '23 at 20:12
  • yes , my intent was to use the variable id – Marcos Almeida Jun 26 '23 at 20:20
  • Then this is effectively just a typo. See: [How to interpolate variables in strings in JavaScript, without concatenation?](https://stackoverflow.com/q/3304014/328193) – David Jun 26 '23 at 20:21
  • but in the line that says echo '
  • i made each id from a variable
  • – Marcos Almeida Jun 26 '23 at 20:21