首页 > 解决方案 > 如何使用帖子 ID 在特定帖子上显示 ajax

问题描述

我在帖子数量上显示 ajax 点赞,但问题是当我单击“点赞按钮”时,点赞(不加载页面)仅显示在第一篇帖子上,当我刷新页面时,所有点赞都显示在它们自己的位置。我想在特定帖子上显示 ajax,而不仅仅是在第一个帖子上。我想我需要在成功函数中传递 ID,但我不知道如何。这是代码。在我的代码中:谣言是一个帖子,喜欢 = 批准,不喜欢 = 不批准。

查看 Ajax + Html 视图的特定部分

function approve_rumor(r_id) {
  // alert("dfdfdf");
  $.ajax({
    type: "post",
    url: "<?php echo base_url('Home1/approve_rumor') ?>",
    data: {
      r_id: r_id
    },
    cache: false,
    success: function(val) {
      if (true) {
        $('#showapp').html(val);
      } else {
        // <?php //echo base_url('Login'); ?>;
        alert("You need to Login");
      }
    }

  });
}
<span class="like-listing fll approve" onclick="approve_rumor(<?php echo $rumors->rumor_id; ?>)">
  <i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
</span>
<span id="showapp" class="fll"><?php echo $rumors->rumor_totalapprovals ?></span>

控制器

function approve_rumor() {

  if ($this - > session - > userdata('user_email', 'user_id')) {
    $this - > load - > model('rumor_model');
    $r_id = $this - > input - > post('r_id');
    $data['user_id'] = $this - > session - > userdata('user_id');
    $data['rumor_id'] = $r_id;
    $this - > rumor_model - > ApproveRumor($data);

    //$this->load->view('home1',['approval'=>$approval]);
  } else {
    return redirect('Login');
  }
}
function ApproveRumor($data) {
  // echo "<pre>";
  // print_r($data);
  // exit;
  $r_id = $data['rumor_id'];
  $query = $this - > db - > insert('approval', $data);
  if ($query) {
    $a = $this - > db - > query("SELECT * ,  count(rumor_id) as count_like FROM approval WHERE rumor_id = $r_id ");
    echo "<pre>";

    print_r($a - > row() - > count_like);

    $totalapprovals = $a - > row() - > count_like;
    $this - > db - > query("UPDATE rumors SET rumor_totalapprovals = $totalapprovals WHERE rumor_id = $r_id");
    // echo $totalapprovals; 
    //  $this->db->where('rumors.rumor_id',$r_id);
    //  $res = $this->db->update('rumors',$totalapprovals);

  } else {
    echo "0";
  }
}

标签: javascript

解决方案


我发现将数据传递给 $.ajax 回调函数的一种很酷的方法是添加一个自定义选项,然后在 $.ajax 回调中将其作为 this.optionProp 引用:

$.ajax({
    type: "post",
    url: "your/url/here",
    data: {
      r_id: r_id
    },
    r_id:r_id,  //Your custom option
    cache: false,
    success: function(val) {
      console.log("r_id: " + this.r_id);  //The custom option can be referenced with this.optProp
    }

  });

让我知道这是否有帮助或不是您想要的,我们会修复它


推荐阅读