CI 묻고 답하기

제목 폼검증과 연관된 ajax 질문입니다.
카테고리 CI 2, 3
글쓴이 소연신 작성시각 2017/02/15 17:33:31
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 14957   RSS

현재 폼에 ajax를 이용하여 ajax를 처리하는 컨트롤러로 값 전달하고 사용하고 있습니다.

근데..폼 검증을 사용하려고 보니 form 안에 있는 뭐.. input에 name값을 줘야되는데 이러면 ajax가 아니라 바로 컨트롤러로 이동되는 거 아닌가요? ajax를 사용하고 폼 검증도 사용하고 싶은데 제가 잘못 이해한 것인지요ㅜ

 

아.. 폼 검증 name과 ajax로 보내는 이름을 다르게 하면 되는건가... 답변 부탁드립니다ㅜ

    <?php echo validation_errors(); ?>

name="nickname" value="<?php echo set_value('nickname'); ?>"

$this->form_validation->set_rules('nick_name', '닉네임', 'required|min_length[1]|max_length[6]');

 다음글 ajax와 폼검증 질문 다시 드립니다ㅜsjs (5)
 이전글 mysql 이전글 다음글 (5)

댓글

kaido / 2017/02/16 09:06:37 / 추천 0

우선 변수명이 잘못되신것 같구요.

[nickname 으로 보내시고 검사는 nick_name 으로 하고있음]

 

폼검증  true or false 구문에서 ajax return type 형태에 맞춰서 리턴해 주시면 됩니다.

 

헷깔리시면 ajax로 호출하지 마시고, get 방식으로 url 호출해서  결과값을 확인 하시고 post로 바꿔서 테스트 하심을 추천드립니다.

소연신 / 2017/02/16 10:03:56 / 추천 0

@kaido

아 저거는 그냥 예시 적어 놓은 거였구요. 아직 사용하지는 않고 있습니다. ajax로 값 전송 되고, 폼검증만 따로 했을 경우 됩니다. 근데 두 개를 합쳐서 해보려니 읭 스러워서요ㅜ 구글 뒤져보니 같은 고민 한 사람들이 많아서 보고 있긴한데 이해가 잘 안가네요.

현재 ajax는

$.post("/ajax/Ajax_user/join_ajax",
        {'join_id':join_id, 'join_pw':join_pw, 'nick_name':join_nick_name},
        function(data)
        {
            if(data)
            {

            }
        }
    );

 

이런식으로..형태만 잡아 놓은 거구요. 전송 잘 됩니다.

폼에서 input<"class="" name="nick_name" value="<?php echo set_value('nickname'); ?>"

이렇게 ajax, 폼검증을 동시에 사용하면 값이 ajax로 전송되는지 바로 가는지 모르겠어서요.

값 받을 때 $this->input->post('nick_name'); 이렇게 받는데..

kaido / 2017/02/16 10:11:34 / 추천 0

ajax로 호출했으니 ajax로 리턴 됩니다.

당연히 status 값을 ajax 리턴 형태로 만들어서 리턴해줘야만 합니다.

 

고민하지 마시고 한번 직접 테스트 해보시면 바로 이해할수 있습니다~ ^^

소연신 / 2017/02/16 11:31:01 / 추천 0

@kaido

해보다가 다시 질문드립니다.

ci검증은 되고, js검증도됩니다. 근데 이 두개를 같이 쓰려고 하니 방법에서 막히네요. 일단 회원가입 같은 경우 필드가 비었거나 혹은 글자수가 다르거나 특문이 있거나 같은 경우를 js에서 얼럿으로 띄우는데요. ci검증에선 어떻게 처리를 해야 될까요.

또, 이게 제가 잘못해서 그런진 모르겠는데 js얼럿이 뜨면 ci폼검증이 따로 안먹히는 거 같습니다. validation_errors() 이 메세지가 안 뜨네요. js를 막아놓으면 되구요.

 

2. 제가 현재 ajax를 ajax처리하는 컨트롤러를 따로 만들어서 사용하고 있습니다. 가령 User 컨트롤러에서 로그인 회원가입 같은 뷰 로드 시키고.. 회원가입 페이지에서 회원가입을 누르면 ajax나 ci 폼검증은 Ajax_user 컨트롤러에서 하게 됩니다. 그러다보니 당연하게도 주소가 바뀌게 되는데요. 기존에는 /User/join 이었다가 만약 검증시에 에러가 있어서 얼럿이 뜨거나 하면 당연히 주소가 /Ajax_user가 됩니다. 이거 따로 쓰시는 분들도 다 이렇게 쓰시나요? 저게 싫으면 그냥 User컨트롤러에서 다 처리해야 되는 부분이겠죠?

kaido / 2017/02/16 11:48:16 / 추천 0

1. 당연하게도 ci 폼검증의 validation_errors() 메세지를 곧장 적용 시킬수는 없습니다.

그래서 해당 값을 받아가시려면 status 값을 따로  ajax type에 맞게 리턴시켜 줘야 한다고 답변을 달았구요~ ^^

 

2. ajax 호출에 컨트롤러를 다른거 사용한다고 달라지는 것은 없습니다. 동일합니다. ^^

저 같은 경우엔 가능하면 같은 컨트롤러에서 ajax 처리하는 편입니다.

이유는 같은 컨트롤러를 사용하면 같은 모델을 사용 하게 되거든요~

ajax 전용 컨트롤러를 구성하면 해당 컨트롤러는 모든 모델을 불러다 써야 하는 부분이 꺼림직해서...

물론 이건 개인 적인 생각입니다~ ^^

 

소연신 / 2017/02/16 12:00:16 / 추천 0

@kaido

으악 댓글이 지워져서ㅜ

1. 그게 그 말씀이셨군요ㅜㅜ 그러면 에러가있어서 js가 얼럿으로 메세지를 띄우고.. ci폼검증도 메세지를 띄우게 하시나요? 그럼 두 번이 뜨는 셈인데..아..ci폼검증은 굳이 띄울 필요가 없는건가.음.ㅜㅜ 이 부분은 어떻게 하시는지 궁금합니다ㅜ

2. 아 저도 모델 로드 부분이 걸리긴 했는데.. ajax컨트롤러를 기존 컨트롤러수만큼 만드는 선택을 했거든요.ajax폴더안에요. User컨트롤러->Ajax_user, Mypage->Ajax_mypage. 컨트롤러가 너무 많아 지는 거 아닌가 싶긴한데... 제일 걸리는 건 주소네요 역시ㅜ 이게 하나의 페이지에 접근 주소가 두 개가 되어 버리는데.. 이것도 선택의 문제겠죠? 아니면..ajax컨트롤러 타고 들어오는 루트를 따로 막을 수 있는 조건을 줄 수 있으려나..하으