제목 | ajax와 폼검증 질문 다시 드립니다ㅜsjs | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 소연신 | 작성시각 | 2017/02/16 14:16:18 |
|
|||
[controlles] if($this->form_validation->run() == false) { $errors = validation_errors(); echo json_encode($errors); $this->load->view('/user/join'); }
[view] var join_id = $(".join_id").val().trim(); var retn = true; if(retn && join_id == '') { alert('아이디를 입력하세요.'); retn = false; }
$.post("/ajax/Ajax_user/join_ajax", {'join_id':join_id}, function(data) { }.json )};
<form method="post" action="/ajax/Ajax_user/join_ajax"> <input type="text" name="join_id" class="user_input check_input join_id" value="<?php echo set_value('join_id');?>" /> <input type="submit" class="ubtn ubtn_right btn_confirm" id="join_submit" value="회원가입하기">
kaido님께서 알려주셨는데...아 그래도 안되네요.. 도저히 모르겠어서 다시 질문드립니다. 1. 회원가입 페이지는 User컨트롤러에서 로드되어있고 회원가입 페이지에서 데이터는 ajax로 ajax를 따로 처리하는 ajax_user컨트롤러로 갑니다. 가기 전에 js로 검증을 하구요. 이건 잘 됩니다. 여기에 CI 폼검증을 추가하려고 하는 입장인데.. ci폼검증 쓰기 전에는 뷰에서 form에 아무값도 주지 않았었고 input submit대신 button type button으로 사용했었습니다. js로 검증하는 걸 막아놓고 위 소스처럼 ci폼검증을 하면 그건 잘됩니다. 근데 두 개를 합쳐서 하면 먹통이 됩니다. kaido님께서 당연히 바로 주면 안되니 컨트롤러에서 리턴값을 주라고 하셔서.. $errors = validation_errors(); echo json_encode($errors); 이렇게 줬습니다. 근데...아무것도 입력하지 않고 회원가입 버튼을 누르면 얼럿으로 입력하라고 뜹니다. js에 넣은것처럼. 근데 거기서 멈춰버려요. ci폼검증 에러메시지도 떠야 되는데요.,
2. 만약 검증 2개가 잘 됐다고 가정했을 때.. 오류 메세지를 두 번 띄우게 되는데 이런 경우 어떤 메세지를 띄우시고 어떻게 처리하시는 지 궁금합니다.
3. 컨트롤러에서 리턴값을 보낼 때... 리맵에 있는 헤더가 딸려 가는데..이거 어떻게 막는 방법이 있나요.. remap에 조건을 주면 되는건지...ㅜㅜ
|
|||
다음글 | phpexcel라이브러리 pdf 파일로 변경 에러 | ||
이전글 | 폼검증과 연관된 ajax 질문입니다. (6) | ||
kaido
/
2017/02/16 14:33:58 /
추천
0
|
소연신
/
2017/02/16 15:13:31 /
추천
0
@kaido 일단 리맵 수정해서 테스트 해봤습니다ㅜ 감사합니다. 고놈은 해결이 됐고...ajax로만 ci폼검증이..되네요? 뷰에서 from에 주소 안주고input submit이 아닌 button으로 remap테스트 해보다가.. 하는김에 이것도 해봤는데 잘 넘어온; 뭐지이거..원래 되는 건가요 이런방식으로?
아..이거 제가 잘못생각한거 같은데... js검증에서 얼럿이 뜨면.. 데이터가 전송이 안되니.. ajax로 나머지 ci검증은 못하는게 맞죠..음.. 그럼 뷰에서 처리해서 넘길 수 밖에 없는거네요
아아;; var retn = true; 자바스크립트 이 놈 탓이었네요. 중복으로 뜨게 만드는거 방지하려고 넣은 놈 때문에 얼럿이 한 번 뜨면 당연히 데이터 전송이 안되니 ci폼검증을 시작조차 못했죠..ㅋㅋㅋㅋ 소름돋네요 멍청함에..하 |
kaido
/
2017/02/16 15:21:22 /
추천
0
뭐든 해결 되었으면 일단 외쳐야 합니다. 비바~ 와우~ 브라보~ 대한독립만세~ 응? |
소연신
/
2017/02/16 15:24:19 /
추천
0
@kaido 그럼 정말 마지막 질문입니다! 일단 js에러 ci폼검증 에러 둘 다 띄우는데는 성공했는데.. 계속 두 번 띄울 순 없는 노릇이고.. 선택을 해야 될 거 같은데요.
가령 예를들어 아이디 입력의 경우.. 필수입력이고, 영어만 되고, 3~7이내 글자수..이런 조건이라면 이건 js단이나 ci폼검증에서나 둘 다 검증이 되는데 그렇지 않은 경우가 있을까요? 에러 메세지야 둘 중 아무거나 띄워도 되는데.. ci검증 하고 나서 메세지를 굳이 보여줄 필요는 없어보이구요. 아니면.. 자바스크립트가 뚫리고 서버단에서 바로 걸렸을때만 메세지를 띄우고 싶은데..그게 가능한지도요ㅜㅜ |
kaido
/
2017/02/16 15:40:03 /
추천
0
<script> if(!$('#password').val()){ alert("패스워드를 입력해 주십시오."); return false; } $.post("/ajax/Ajax_user/join_ajax", {'join_id':join_id}, function(data) { }.json )}; </script> 그냥 이렇게 하시면 됩니다. return false; 는 php 에서는 exit; 같은 역할을 합니다.
전반적으로 소스를 복잡하게 만드시려고 노력(?) 하시는것 같아요. 반대로 소스를 슬림 하게 만드는 방법을 찾다 보시면 오히려 더 간결하게 정리가 되어서 머릿속도 같이 정리 됩니다. |
ajax 리맵처리는 이렇게 하시면 되구요.
우선 ajax로 호출하지 마시고 직접 url 주소 접근해서 테스트 해보세요.
동기화 방식으로 호출되어서 정상이면, 비동기로 호출하면 당연히 정상입니다.
그리고 ajax로 호출했으니 당연히 ajax로 리턴 됩니다. [핵심요소라서 굷게 씁니다!]
뷰를 호출 하신다고 자동으로 뷰가 넘어가진 않아요.
현재 소스를 보니 ci 폼밸리데이션과 ajax 리턴 방식 하고 혼돈하고 계신것 입니다.