Codeigniter如果插入的数据再次返回true给json?这是可能的?

时间:2015-12-25 11:50:58

标签: javascript php json codeigniter

我正在使用json将数据发布到控制器,但如果数据成功插入数据库,我无法做一些效果,

此if语句在此javascript代码中不起作用? 我的意思是.like-btn .html()不起作用,但数据插入数据库?

  

我在0到10之间的Javascript经验:D

     

使用Codeigniter 3.0.3

这是我的javascript

<script type="text/javascript">
$(document).ready(function() {
    $(".like-btn").click(function(event) {
    var liker_id = "<?php echo $this->session->userdata('id'); ?>";
    var post_id = $(this).attr('post-id');
        jQuery.ajax({
            type: "POST",
            url: "<?php echo base_url('home/AddLike'); ?>",
            dataType: 'json',
            data: {liker_id: liker_id, post_id: post_id},
            success: function(res) {
            if (res)
               {
                  $('.like-btn[post-id = '+post_id+']').html('<span class="fa fa-check"></span> Liked');
               }
            }
        });
    });
});
</script>

这是我的控制器

function AddLike() {
    $this->load->helper('string');
    $this->load->model('users_model');
    $this->users_model->Add_like();
}

这是我的模型方法

function Add_like() {

        $this->db->where('liker_id', $this->input->post('liker_id'));
        $this->db->where('post_id', $this->input->post('post_id'));
        $query = $this->db->get('likes_table');     
        if($query->num_rows() == 0) {
            $data = array(
                'liker_id'              => $this->input->post('liker_id'),
                'post_id'               => $this->input->post('post_id')
            );
            $this->db->insert('likes_table', $data);
            return true;
        }
    }

3 个答案:

答案 0 :(得分:2)

您应该调试ajax响应的代码。您应该检查是否在 res 变量中得到任何回复。

重要
1)如果条件你应该使用双引号(“”)来包装变量 post_id ,如
     $('。like-btn [post-id =“'+ post_id +'”]')。html ...
2)另一件事是你应该返回“true”作为字符串而不是布尔值,并在ajax成功块中用字符串检查。

答案 1 :(得分:2)

只需在模型下方进行更改:

return更改为echo

function Add_like() {

    $this->db->where('liker_id', $this->input->post('liker_id'));
    $this->db->where('post_id', $this->input->post('post_id'));
    $query = $this->db->get('likes_table');     
    if($query->num_rows() == 0) {
        $data = array(
            'liker_id'              => $this->input->post('liker_id'),
            'post_id'               => $this->input->post('post_id')
        );
        $this->db->insert('likes_table', $data);
        echo true;
    }
}

答案 2 :(得分:1)

解决方法在控制器方法

的末尾添加此行
echo true;

编辑后的代码

function AddLike() {

    $this->load->helper('string');
    $this->load->model('users_model');
    $this->users_model->Add_like();
    echo true;

}