CI によって開発された、私の Web サイト全体のコメントを処理するコメント ライブラリを作成しました。
私はajaxを使用してコメントを追加しているので、ajaxを処理するMY_Controllerに関数を配置する練習を思いついた
public function comment_add()
{
echo $this->comments->add();
}
また、AJAX Jquery コードでは、どのコントローラーも親コントローラーにある comment_add() にアクセスできるため、カテゴリーはコントローラー名の 1 つであることを示しています。
$('#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;
}
問題は、コメントが2回挿入され、データベースにも2回挿入されることです。x -Debuggを使用しても、これを何時間も追跡してきました。彼はエコーを$this->comments->add();
2回通過することがわかりました。