我创建了一个评论库来处理由 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();
两次不知道他为什么要这样做,我已经跟踪了几个小时,谢谢你的帮助