Php jquery-ajax-逐个更新列的问题

Php jquery-ajax-逐个更新列的问题,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,当我点击一个图像时,我想根据id更新每一列,而不刷新所有页面。当我在图像上单击每个时,我的代码只更新最后一列ID。 index.php: $rzp=mysqli_query($conn,"SELECT * FROM `tbl_users_posts` WHERE uid=1"); while($rw=mysqli_fetch_assoc($rzp)){$id=$rw['id']; echo $id;?><img id="up" src="pc3

当我点击一个图像时,我想根据id更新每一列,而不刷新所有页面。当我在图像上单击每个时,我的代码只更新最后一列ID。
index.php:

$rzp=mysqli_query($conn,"SELECT * FROM `tbl_users_posts` WHERE uid=1");
        while($rw=mysqli_fetch_assoc($rzp)){$id=$rw['id'];
            echo $id;?><img id="up" src="pc3/up.png" alt=""><br>
 <?php }?>
 <script>
 $(document).ready(function() {
   var id = <?php echo $id;?>;

  $(document).on("click","#up",function() {
    $.ajax({
        method: "POST",
       url: "y2.php",
        data: {id: id},
                async :false
      }).done(function(msg2) {
        alert(msg2);
      });
  });
  });
 </script> 

谢谢

这里有几件事情马上就错了:

  • 您正在HTML中使用
    id
    值,这是无效的
  • 您的
    var id=…
    JavaScript代码始终具有数据中的最后一个值,并且每次都显式使用该值,而不是HTML元素中的任何值
让我们简化一下。首先,回显HTML元素以包括(1)用于触发单击处理程序的
类和(2)单击处理程序需要的ID:

<?php
while($rw=mysqli_fetch_assoc($rzp)){
    $id=$rw['id'];
    echo $id;
?>
    <img class="up" src="pc3/up.png" alt="" data-id="<?php echo $id; ?>"><br>
<?php } ?>

(注意:我还删除了
async:false
,因为人们永远不应该使用
async:false
。如果出于某种原因您认为需要使用它,那么这是一个完全不同的问题,也应该解决。)

因为您在while循环中设置了$id,所以它将始终是最后一个id集。最好是找到一种方法将该id附加到您的图像上,可能作为一个数据属性,然后您可以在javascript中获得该属性。此外,id必须是唯一的-您为每个图像提供了相同的id。谢谢,它可以工作。现在,我应该如何删除警报和函数msg2部分?@behzad:只需删除它,就可以删除
alert()
。不清楚是什么问题,像这样。完成(函数(){});没有必要删除这个函数?@behzad:现在真的不清楚你在问什么。您可以编写代码来执行您试图执行的任何操作。如果您不想以任何方式响应AJAX响应,则不需要
.done()
处理程序。尽管建议至少检查响应是否有错误,但不要假设它按预期工作。它工作正常,谢谢。我想知道该如何移除该部分。我还有一个问题,这是创建like按钮的好方法吗?
<?php
while($rw=mysqli_fetch_assoc($rzp)){
    $id=$rw['id'];
    echo $id;
?>
    <img class="up" src="pc3/up.png" alt="" data-id="<?php echo $id; ?>"><br>
<?php } ?>
$(document).on("click", ".up", function() { // use the class as the selector
  var id = $(this).data('id'); // get the data-id value from this specific element
  $.ajax({
    method: "POST",
    url: "y2.php",
    data: {id: id}
  }).done(function(msg2) {
    alert(msg2);
  });
});