如何在for循环中显示对<div>的ajax响应

时间:2017-03-23 07:36:09

标签: javascript php jquery ajax codeigniter

我正在尝试修改评论框,因此有很多用户对帖子发表评论。每个用户都可以编辑他们的评论注释从数据库中获取,并且每个注释都写入<div class="view-comment">

我的问题是单个编辑结果显示在所有评论字段中。我认为这是因为循环中的代码。如何单独更改它们?

<?php foreach ($comments as $row)  
{ 
  $comment = $row["comment"];
  $username = $row["username"]; ?>

  <div class="view-coment" ">
    <div class="comment-padd">
      <div class="comments">
        <div class="row">
          <div class="col-md-1">
            <div class="coment-lft">
              <?php if($comment) { ?>
                <img src="<?php echo base_url() ?>img/avatar/<?php echo $username ;?>.jpg" class="img-response">
              </div>
            </div>
          <div class="col-md-11">
            <h2><?php echo $row['username'];?></h2>
            <p><?php echo $row['comment'];?></p>
            <hr>
          </div>
        <?php } ?>
      </div>
      <?php if ($username == $this->session->userdata('username') ){ ?>
        <div class="comments-edit">
          <div class="dropdown">
            <a class=" dropdown-toggle" id="cmnt"><i class="fa fa-angle-down " aria-hidden="true" data-toggle="dropdown"></i></a>
            <ul class="dropdown-menu-5" aria-labelledby="cmnt">
              <input type="button" id="edit" value="Edit" />
              <button class="my_button" id="<?php echo $row['id']; ?>" >edit</button>
$('button.my_button').click(function(e) {
  e.preventDefault();     
  var url = $(this).attr('data-url');
  var id = $(this).attr('id');
  // alert(id);

  $.ajax({
    type: "POST",
    url: '<?php echo site_url('home/comment_edit'); ?>',
    data: 'id=' + id,
    cache: false,
    success: function(data){
      $('.view-coment').html(data);
    }
  });
  return false;
});

1 个答案:

答案 0 :(得分:0)

由@Rory McCrossan提出的@sooraj subramanyan请先修改你的html。然后,您可以将评论框设置为唯一,如下所示。

<div class="view-coment" id="comment_<?php echo $row['id']; ?>">

并在您的js中使用此

更新评论框
$('#comment_'+id).html(data);