CI 묻고 답하기

제목 ajax 질문좀 드리겠습니다.
글쓴이 작성시각 2014/10/06 15:59:36
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 13499   RSS
기존에 만들어 놓았던 게시판을 

코드이그나이터로 바꾸는 중인데요

기존 게시판 댓글도 ajax를 이용하여 만들었거든요

책에 나와있는 방식은 댓글 리스트를 바로 출력하기 보다는 append 방식으로 추가하는 것으로 판단되서

이러면 css를 2번작업해야할 것 같아서 기존 게시판과 동일하게 아래와 같이 하고 싶거든요

$.post("/codeigniter/board/comment_add", {table:table, view_no:view_no, content:content}, function(data){
     $('#comment').load('board_comment_v.php');
}); 

그리고 제가 MainController를 만들고 여기서 _remap과 $method를 출력해줍니다.

그리고 나머지 Controller에서 다시 MainController를 상속합니다.

위와 같은 방법을 사용하니 board_comment_v.php을 다시 load하면서 화면에 있는 모든 내용을 $('#comment')

여기에 다 출력해버리네요... 

$('#comment').load('board_comment_v.php'); 구문 그대로 board_comment_v.php 여기서 출력된 

내용만 $('#comment')에 추가하려면 어떻게 해야할지... 부탁드리겠습니다 ㅠㅠ
 다음글 insert_id 질문 좀 드릴게요 (2)
 이전글 디비연결 라이브러리 사용방법 고수님들 좀 봐주세요 ㅠㅠ (2)

댓글

양승현 / 2014/10/06 16:05:08 / 추천 0
화면의 모든 내용이 해더,게시글부분,코멘트부분,푸터 부분이겠지요?
_remap에서 해더,푸터부분을 출력하시는 거라면 해당 부분에 조건절을 걸어 주셔서 처리하시면 될거 같아요.
저같은 경우는 ajax일경우 해더와 푸터를 따로 지정하여 쓴답니다.
질문하신게 이게 맞는건지 모르겠네요. ^^;
 
/ 2014/10/06 16:12:08 / 추천 0
public function _remap($method)
    {
        if (!$this->input->is_ajax_request()){
            $this->load->view('menu_v');
        }

        if(method_exists($this,$method))
        {
            $this->{"{$method}"}();
        }
    }

위 부분이 제 _remap 입니다. 

일단 메뉴 부분은 조건절로 출력을 막았으나  $this->{"{$method}"}(); 을 어떻게

조건절로 넣어야 하는지요...
양승현 / 2014/10/06 17:19:48 / 추천 0
쫑 // 리맵부분에선 막는부분이 없네요. 해당 메소드로 갔을때 상하단 출력을 하는가요? 필요한 부분만 ajax로 호출시 출력되도록 해야겠죠. 해당 command_add에서 다른 부분들도 다 출력을 한다면 그부분에서 조건절로 막아야 하고요. ^^;
/ 2014/10/06 17:29:20 / 추천 0
양승현 //

음... 댓글을 달때 _remap에 오는 메소드 또한 view 입니다.

상하단 출력을 원하는게 아니라 댓글을 달때 view에 속하는 모든 소스가 

$('#comment')안으로 들어 오는것이 문제점 입니다.

board_comment_v.php에 해당 view에 대한 댓글을 출력하는 소스가 들어있습니다.

$.post("/codeigniter/board/comment_add", {table:table, view_no:view_no, content:content}, function(data){

     $('#comment').load('board_comment_v.php');
}); 

위 jquery에 /codeigniter/board/comment_add 이 부분이 해당 view에 대한 댓글을 추가하는 부분이구요

저장 후 다시 해당 view에 대한 댓글을 load 하고 싶은데 현재 view에 있는 모든 html 소스가 $('#comment')에 들어옵니다.



 
들국화 / 2014/10/06 17:35:36 / 추천 0
댓글 내용만 추가 하고 싶으면 따로 뷰를 만들거나 컨트롤에서 HTML을 빤들거나 해서 뿌려 주면 됩니다.
/ 2014/10/06 17:41:07 / 추천 0
들국화 //

<?
    $view_no = $this->uri->segment(5);
    $sql = "SELECT * FROM se_board_comment where view_no = $view_no";
    $query = $this->db->query($sql);
    $comment = $query->result();
?>
<? foreach($comment as $cm)    { ?>
    <div class="cm_row">
        <span><?=$cm->writer?></span>
        <span><?=$cm->content?></span>
        <span><?=substr($cm->date,0,10)?></span>
        <span>     <?=$cm->no?></span>
    </div>
<? } ?>

위에 소스가 board_comment_v.php 소스 입니다.

view에는 바로 include 로 출력하고 추가 뒤에 load로 다시 갱신합니다만

view의 소스 전체가 $('#comment')에 들어옵니다