CI 묻고 답하기

제목 ajax , json 통신 문제
글쓴이 헤덥 작성시각 2014/08/07 16:20:07
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 17230   RSS
/////////////input tag////////////
<input type="text" class="form-control" id="email" name= "email" placeholder="email을 입력해 주세요." value="" /><i class="icon-envelope"></i>
<input type="text" class="form-control" id="name" name= "name" placeholder="이름을 입력해 주세요." value="" /><i class="icon-user"></i>
 <input type="password" class="form-control" id="password" name="password" placeholder="비밀번호를 입력해 주<input type="password" class="form-control" id="password_c" name="password_c" placeholder="비밀번호를 확인을 입력해 주세요." value="" /><i class="icon-lock"></i>세요." value="" /><i class="icon-lock"></i>
4개 값을 입력 

///////////ajax 통신///////////////
<script type="text/javascript">
    $(function(){
        $('#register').on('click', function(){
            
            var ajax_data = {"email" : $('#email').val(), 
                            "name" : $('#name').val(), 
                            "password" : $('#password').val(), 
                            "password_c" : $('#password_c').val(), 
                            "csrf_test_name" : $("input[name=csrf_test_name]").val()
                            }
                            
                            alert( $('#email').val() + '/' + $('#name').val());
            $.ajax({
                type : 'post',
                dataType: 'json',
                url : "/my/member/ajax_register",
                data : ajax_data,
                success : function (data) {
                  
                  alert("adfasdfasd");             
                }   
         
            });
        });   
    });
    
</script>

///////////컨트롤러 소스//////////////////

    public function ajax_register(){
        // 폼 검증 라이브러리 로드
        $this->load->library('form_validation');
        $this->load->helper('json');
        
        // 폼 검증할 필드와 규칙 사전 정의
        $this->form_validation->set_rules('email', '이메일', 'required');
        $this->form_validation->set_rules('name', '이름', 'required');
        $this->form_validation->set_rules('password', '비밀번호', 'required');
        $this->form_validation->set_rules('password_c', '비밀번호 확인', 'required');
        
        if($this->form_validation->run() == TRUE ){
            // form 유효성 검사 성공시 
            $email = trim($this->input->post('email', TRUE));
            $name = trim($this->input->post('name', TRUE));
            $password = trim($this->input->post('password', TRUE));
            $password_c = trim($this->input->post('password_c', TRUE));
            
            if($email AND $name AND $password AND $password_c)
            {
                //form 값 배열지정 
                $member_info = array('EMAIL' => $email, 'NAME' => $name, 'PASSWORD' => $password);
                
                //model 디비넣기
                $result = $this->member_m->insert($member_info);
                
                if($result > 0){
                    //db 성공시 
                    $this->output->set_header('Content-Type: application/json; charset=utf-8');
                    $json_data = array("error" => '0000' , "result" => $result);    
                    echo json_encode($json_data);
                }else{
                    //db 실패시
                    $this->output->set_header('Content-Type: application/json; charset=utf-8');
                    $json_data = array("error" => '0001' , "result" => $result);
                    echo json_encode($json_data);                      
                }
            }
            
        }else{
            // form 유효성 검사 실패시
            $this->output->set_header('Content-Type: application/json; charset=utf-8');
            $json_data = array("error" => '0002' , "result" => "");
            echo json_encode($json_data);     
        }
    }

ajax 통신은 성공을 하나 컨트롤러의 코드를 구동을 못시키네요 
db의 값을 못넣어요 json 값도 출력이 되질 않고요 ㅠㅠ
컨트롤러 코드로 ajax통신이 아닌 페이지 이동부분에선 db에 값이 제대로 들어갔었어요 
model 문제는 아닌것 같고요

아 도저히 이유를 모르겠네요.
 
 다음글 안녕하세요. if문 어떡해 사용할까 고민중입니다. (3)
 이전글 다른 주소로 리다이렉션 질문드립니다. (1)

댓글

헤덥 / 2014/08/07 17:54:26 / 추천 0
햐......자문자답 ㅠㅠ remap 부분에 제가 ajax 로 받았을경우 처리를 해줬었는데 함수를 로드를 안해줬었더군요 ㅠㅠ 

  
  public function _remap($method)
    {
        if(!$this->input->is_ajax_request()){
            //헤더 include
            $this->load->view('header_v');
            
            if(method_exists($this, $method))
            {
                $this->{"{$method}"}();
            }
            //푸터 include
            $this->load->view('footer_v');
        }else{
           $this->output->set_header('Content-Type: application/json; charset=utf-8'); 
           if(method_exists($this, $method))
            {
                $this->{"{$method}"}();
            }
        }   
        
    }


이렇게 해결했습니다 에휴...몇시간째 삽질을 
kaido / 2014/08/08 07:38:47 / 추천 0
수고하셨습니다 ^^
ajax는 익숙한 베터랑도 삽질 하게 만드는 녀석입니다.
잘 하는 방법은 경험밖에 없더군요.