1

我创建了一个评论库来处理由 CI 开发的整个网站上的评论

我正在使用 ajax 添加评论,所以我想出了让函数位于处理 ajax的MY_Controller

public function comment_add()
    {
        echo $this->comments->add(); 
    }

并在AJAX Jquery 代码中指出 category 是控制器名称之一,因为任何控制器都可以访问在父控制器中找到的 comment_add()

$('#myform').submit(function(e) {

    e.preventDefault();
    dataString=$("#myform").serialize();

  $.ajax({
    type:"POST",
    url: base_url+"snc/category/comment_add",
    data: dataString,
    success: function(data){
        $(data).hide().insertAfter('#inserAfterThis').slideDown('slow');
        $('#comment_new').val('');
        }
    }
  );
});   

在我的评论库中

public function add()
    { 
        $post_id=$this->get_post_id();
        $post_type=$this->get_post_type();

        if(!$post_id || !$post_type || !$this->user_id)
            return false;

        $id=$this->ci->comments_model->comment_add($this->user_id,$post_id,$post_type);
        if($id)
        {
            return $this->_markup($id);
        }
        else
            return false;
    }

评论模型

function comment_add($user_id,$post_id,$post_type)
{

    $data['comment_user_id']=$user_id;
    $data['comment_post_type']=$post_type;
    $data['comment_post_id']=$post_id;
    $data['comment_text']=$this->input->post('comment_new');

    $this->db->insert('comments', $data);

    if($this->db->affected_rows()>0)
        return $this->db->insert_id();
    else
        return false;

}

问题是评论被插入了两次,数据库中也插入了两次即使 x-Debugg 发现他通过 echo$this->comments->add(); 两次不知道他为什么要这样做,我已经跟踪了几个小时,谢谢你的帮助

4

3 回答 3

1

也许它被提交了两次。当您获得 ajax 成功或只是 alet("something") 时尝试取消绑定提交,这样您就会知道该问题是基于 javascript 还是基于 php。

将您的提交功能替换为:

$('#myform').submit(function(e) {
    e.preventDefault();
    dataString=$("#myform").serialize();
    $(this).unbind("submit"); //so you will submit only once

  $.ajax({
    type:"POST",
    url: base_url+"snc/category/comment_add",
    data: dataString,
    success: function(data){
        $(data).hide().insertAfter('#inserAfterThis').slideDown('slow');
        $('#comment_new').val('');
        }
    }
  );
});   
于 2013-02-03T18:20:49.277 回答
0

这里缺少的部分是“snc/category/comment_add”控制器……你确定你不是从那个控制器和 MY_Controller 调用的吗?

您也可以发布控制器代码吗?

于 2013-02-03T07:20:42.033 回答
0

发现我已经加载了两次 Jquery 文件,那是我的错,谢谢大家

于 2013-02-11T15:19:40.450 回答