CI 묻고 답하기

제목 500에러문제인데요... 어디가 문제인지 도무지 모르겠습니다....ㅜㅜ
카테고리 CI 2, 3
글쓴이 blendo 작성시각 2017/10/11 08:05:18
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 19893   RSS

유저가 회원가입할 때 아이디를 중복체크하는 경우의 ajax입니다.

모델에서 var_dump()의 결과를 확인하지 못하는 걸 봐서는 콘트롤러에 문제가 있는 거 같은데.... 어디에 문제가 있는 것일까요?

view는...

<form name='signup_form' method='POST' onsubmit='re_ajax()' >

    <div class='form_group'>

        <label class='control_label' for='userid'>아이디 : </label>

        <span class='id_check'>중복확인</span>

        <input type='id' name='userid' class='form_input input_id' id='userid' placeholder='아이디를 입력하세요'>

    </div>

 

클릭되면 아이디가 있는지 확인하고 ajax합니다.....

$('.id_check').unbind().click(function(){

    var signupid=document.signup_form.userid.value;

    if(!signupid){

        alert('아이디를 입력하세요');

        return false;

    }

    var data='signupid='+signupid;

    $.ajax({

        url : '/index.php/service_ajax/check_userid?'+data,

        type : 'GET',

        success : function(result_idchecked){

            if( result_idchecked==404 ){

                alert( "관련 데이터가 없습니다.\nError Code [" + result_idchecked + "]" );

            }else{

                  $(this).addClass='id_checked';

                 show_idchecked(result_idchecked);

            }

        }

     });

});

function show_idchecked(result_idchecked){    

    if(result_idchecked=='yes'){    // 아이디가 이미 있으면

        $('#singup_hello').removeClass('block').addClass('none');

        $('#ifisid').removeClass('block').addClass('none');

        $('#ifisnotid').removeClass('block').addClass('none');

        $('#ifisid').removeClass('none').addClass('block');    //<span id='ifisid' class='none'>아이디가 이미 사용중입니다.</span>

    }else if(result_idchecked=='no'){    // 아이디가 없으면

        $('#singup_hello').removeClass('block').addClass('none');

        $('#ifisid').removeClass('block').addClass('none');

        $('#ifisnotid').removeClass('block').addClass('none');

        $('#ifisnotid').removeClass('none').addClass('block');    // <span id='ifisnotid' class='none'>사용할 수 있는 아이디입니다.</span>

    }

}

 

콘트롤러에서...

public function check_userid()

{

    $signupid=$this->input->get('signupid');

    $this->load->model('SignupModel');

    $result_idchecked=$this->SignupModel->search_signupid($signupid);

    //echo(json_encode($result_idchecked));

    echo $result_idchecked;

}

 

모델에서....

public function search_signupid($signupid)

{

    var_dump($signupid);

    // SELECT id FROM `member` where id=$signupid

    $this->db->select('id');

    $this->db->from('member');

    $this->db->where('id', $signupid);

    $result=$this->db->get()->row();

    if($result->num_rows()>0){    // 사인업할 때의 아이디가 이미 있으면

        $result_idchecked='yes';

    }else{

        $result_idchecked='no';

    }

    return $result_idchecked;

}

 다음글 form_validation ajax 에러메세지 표시 ... (2)
 이전글 CI interface not found 문제 질문 드... (6)

댓글

배강민 / 2017/10/11 08:38:32 / 추천 0
500에러이므로 js를 보여주실 필요는 없고, 순수하게 호출되는 url을 알려주시고, 500에러의 내용을 보여주시면 원인 추측이 빠르겠습니다. 저는 위 코드로는 에러를 못찾겠네요.
한대승(불의회상) / 2017/10/11 08:46:26 / 추천 0
아파치 로그를 살펴보세요.
kaido / 2017/10/11 09:20:40 / 추천 0

크롬으로 F12 누르시고 콘솔에 500에러 라인을 클릭하신 다음에 리스폰스 된 탭을 찾아보시면 에러메세지와 리턴된 값이 보입니다.

그것도 아니면 ajax가 아니라 submit 으로 때려서 실제 에러가 뭔지 직접 눈으로 확인하시는게 빠릅니다.

그냥 추측하기로는 쿼리를 잘못 때리고 있다고밖에 추측이 안됩니다.

500에러는 보통이 기초적인 문법 오류 혹은 DB 오류이거든요.

변종원(웅파) / 2017/10/11 09:38:41 / 추천 0

아래처럼 바꿔보세요

$result=$this->db->get();

if($result->num_rows()>0){