분명히 저번주에 만들어놨을때는 잘됬는데
뭐때문인지 이상하게 안되네요.
model 쿼리문은 로그인할때랑 같이사용하기때문에 return값이 없을수가 없는상태입니다.
dataType을 text, json둘 다 사용해도 리턴이 이상하게넘어옵니다.
헤더부분이 통째로 리턴되는것같습니다;;
코드한번 봐주세요.
$.ajax({
type:'POST',
dataType:"text",
url:"/user/kst_user/idcheck",
data:{"UID":UID},
success : function(result){
if(result == 0){
alert("중복된 아이디입니다.");
$("#UID").val('');
$("#UID").focus();
}else{
alert("사용가능한 아이디입니다.");
$('#UID').attr('readonly','readonly');
$('.login50-form-btn').css('background-color','#66D37E');
$('#idcheckicon').removeClass();
$('#idcheckicon').addClass('fa fa-check');
$('#idcheckbtn').removeAttr("onclick");
$('#validation').val('1');
}
}
});
function dataType_JSON(){
$UID = $this->input->post('UID');
$user = $this->user_model->getUserID(array('UID'=>$this->input->post('UID')));
if($user->UID == $this->input->post('UID')){
$result = ['success' => false];
echo json_encode($result);
}else{
$result = ['success' => true];
echo json_encode($result);
}
}
function dataType_TEXT(){
$user = $this->user_model->getUserID(array('UID'=>$this->input->get('UID')));
if($this->input->post('UID') == $user->UID){
return 0;
}else{
return 1;
}
}
function getUserID($id)
{
$result = $this->db->get_where('USER', array('UID'=>$id['UID']))->row();
return $result;
}
헤더가 통째로 나온다면 컨트롤러에 remap으로 헤더, 푸터를 자동 추가했거나 어디선가 헤더가 선언된겁니다.
보통 ajax용 컨트롤러를 따로 만들거나 remap에서 ajax 메소드는 헤더, 푸터를 붙이지 않도록 처리합니다.
웅파님 json형태로 리턴했을때
Message: Trying to get property of non-object 이런메세지가나오고,
중복되지않는 아이디를 검색했을땐 else부분이 작동되지않습니다.
중복되는 아이디는 잘 작동하구요. 왜이럴까요..
ajax가 꼬였다 싶으면 추천해 드리는 방법이...
그냥 submit 으로 때려서 확인해 보시라는 것입니다.
$this->user_model->getUserID(array('UID'=>$this->input->get('UID')));
위에는 post로 받아가시고 밑에선 get 으로 받음
return 0; 이나 return 1; 하는 식으로 넘기면 JS로 넘어오는 시점에서 그게 불리언이 될 가능성이 있습니다. 제 기억에 PHP AJAX는 return을 하면 안되고 echo로 값을 보내야 합니다. echo json_encode(배열) 써보세요.
return 0은 text로 받을때 테스트한거구요.
지금 따로 분리해서해보니 json사용안하고 일반text로는 정상적으로 작동됩니다.
하지만 json이문제에요.. 중복된 아이디일경우 echo로 인코드되는데
사용가능한아이디를 적으면 먹통됩니다..
public function json($method){
switch($method){
// if부분은 작동됨 (중복될경우) else부분이 자꾸 false로넘어감
case "idCheck":
$UID = $this->input->post('UID');
$user = $this->user_model->getUserID(array('UID'=>$UID));
if($user->UID == $UID){
$result = ['success' => false];
echo json_encode($result);
}else{
$result = ['success' => true];
echo json_encode($result);
}
break;
// 작동됨
case "idCheckT":
$UID = $this->input->post('UID');
$user = $this->user_model->getUserID(array('UID'=>$UID));
if($user->UID == $UID){
return 0;
}else{
return 1;
}
break;
}
}