CI 묻고 답하기

제목 ajax 공부중입니다.
글쓴이 해행행 작성시각 2016/01/17 16:36:53
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15452   RSS

제 공부법이(아직 너무부족해서) 항상 온전한 코드를 가져와서 분석하는 식으로 하곤했는데.

 

ci에선 ajax 관련해선 온전한소스찾기가 힘드네요.. (아마 제가 부족하여 있어도 못보는 수준일거라 예상합니다만).

 

게시판에다 회원가입, 로그인 넣고있는데

 

회원가입시 유효성검사를 ajax로 구현해 볼려했는데

 

책에있는 ajax를 봐도 제가부족해서 그런지 제껄로 녹여내지를못하네요..

 

controllers, models, views, 그리고 필요한 .js

 

이렇게 빠진거없이 소스 설명이 되어있는 곳이있을까요?

 

주말내내 검색하고 이해할려고 웅파님 책도 열심히보곤있는데 제가부족해서 쓰질못하고있네요..

 다음글 3,02 설치 후 이런 에러가 발생하는데 ? (2)
 이전글 CI 게시판 검색기능 질문입니다. (3)

댓글

/ 2016/01/18 09:02:27 / 추천 0

//해행행

소스설명은 되어있지 않지만, 도움이 될거같아요.

폼검증등 ajax로 처리해서 returnHtml이라는 key로 view를 넘길 수 있는 예제 코드 팁에 올렸는데,

으용 하셔야 할거에요.

http://www.cikorea.net/tip/view/2078/page/1

해행행 / 2016/01/18 12:15:51 / 추천 0

감사합니다!

검색중에 봤던자료인데 글쓴분이 직접댓글달아주시니

엄청 기분이묘하네요 ㅎㅎ;;

혹시 그냥 정말 ajax 기본기능만 된 소스는없을까요? 

주석은없더라도 어디에 어디파일로 넣어야지된다 이런것만있으면 정말 좋을것같습니다. 

그리고 정말로 도움주셔서 정말 감사합니다

/ 2016/01/18 12:57:27 / 추천 0
$.ajax({
 url : action,
 type : 'post',
 dataType : 'json',
 data : data,
 success : function(returnData){
  //만약 메세지가 정의되었으면..
  if ( returnData.msg !== undefined ) {
   //alert(returnData.msg);
   alert_msg(returnData.msg);
  }
  
  //만약 리턴된 html이 정의되었으면..
  if ( returnData.returnHtml !== undefined ) {
   $el.html(returnData.returnHtml);
  }
 }
});

//위 코드 javascript

 

//아래코드 php 컨트롤러..

<?

function stayForm ($w='',$no='') {
 $this->layout = 'default';
 
 $data = array();
 
 //아작스 호출인지
 if ($this->input->is_ajax_request()){
  
  $this->load->library('form_validation');
  
  $config = array(
    array('field'=>'sc_name', 'label'=>'숙소명', 'rules'=>'required|trim|xss_clean|max_length[100]'),
    array('field'=>'sc_type', 'label'=>'유형', 'rules'=>'trim|xss_clean|is_natural_no_zero'),
    array('field'=>'sc_tel1', 'label'=>'연락처1', 'rules'=>'trim|xss_clean|max_length[15]'),
    array('field'=>'sc_tel2', 'label'=>'연락처2', 'rules'=>'trim|xss_clean|max_length[15]'),
    array('field'=>'sc_fax', 'label'=>'팩스', 'rules'=>'trim|xss_clean|max_length[15]'),
    array('field'=>'sc_homepage', 'label'=>'홈페이지', 'rules'=>'trim|xss_clean|max_length[100]'),
    array('field'=>'sc_bank', 'label'=>'계좌번호', 'rules'=>'trim|xss_clean|max_length[100]'),
    array('field'=>'sc_area', 'label'=>'지역', 'rules'=>'trim|xss_clean|is_natural_no_zero'),
    array('field'=>'sc_addr', 'label'=>'주소', 'rules'=>'trim|xss_clean|max_length[100]'),
    array('field'=>'sc_rank1', 'label'=>'인기도', 'rules'=>'trim|xss_clean|is_natural'),
    array('field'=>'sc_rank2', 'label'=>'시설', 'rules'=>'trim|xss_clean|is_natural'),
    array('field'=>'sc_rank3', 'label'=>'서비스', 'rules'=>'trim|xss_clean|is_natural'),
    array('field'=>'sc_rank4', 'label'=>'고객만족도', 'rules'=>'trim|xss_clean|is_natural'),
    array('field'=>'sc_addsel[]', 'label'=>'추가선택', 'rules'=>'trim|xss_clean|is_natural'),
    array('field'=>'sc_info', 'label'=>'숙소소개', 'rules'=>'trim'),
    array('field'=>'sc_refer', 'label'=>'참고사항', 'rules'=>'trim|xss_clean'),
    array('field'=>'sc_memo', 'label'=>'관리자메모', 'rules'=>'trim|xss_clean'),
    array('field'=>'sc_use', 'label'=>'사용여부', 'rules'=>'trim|xss_clean|str_boolean'),
    array('field'=>'sc_order', 'label'=>'순위', 'rules'=>'trim|xss_clean|is_natural_no_zero'),
    array('field'=>'tag[]', 'label'=>'태그', 'rules'=>'trim|xss_clean|is_natural_no_zero'),
  );
  
  $this->form_validation->set_rules($config);
  
  //폼검증.
  if ($this->form_validation->run() == FALSE) {
   
   //입력.
   if ($w == '') {
    
   } else if ($w == 'u') {
   
    if ($no == '')
     json_alert(array('stat'=>0,'msg'=>'잘못된 접근입니다.'));
     
     $data['sc'] = $this->stay_model->get_stay($no);
     
     $data['tag'] = $this->stay_model->get_tagLists($no);
     
     //기존데이터가 있으면 삭제후 새로 세션 등록
     if ( $this->sc_no ) {
      $this->session->unset_userdata(array('sc_no'=>'','sc_name'=>'','sc_type'=>'','sc_cm_no'=>''));
     }
     
     $sessionData = array(
       'sc_no'  => $data['sc']['sc_no'],
       'sc_name'  => $data['sc']['sc_name'],
       'sc_type'  => $data['sc']['sc_type'],
       'sc_cm_no'  => $data['sc']['sc_cm_no']
     );
     
     $this->session->set_userdata($sessionData);
     
     $data['file'] = $this->stay_model->get_stay_file($no);
     
   }else{
    json_alert(array('stat'=>0,'msg'=>'잘못된 접근입니다.'));
   }
   
   $data = array_merge(array(
     'w' => $w,
     'no' => $no,
     'stay_type' => $this->config->item('stay_type'),
     'stay_sell' => $this->config->item('stay_sell'),
     'stay_area' => $this->config->item('stay_area'),
     'tagOptLists' => $this->stay_model->get_tagOptLists(),
   ), $data);
   
   $data['is_view'] = false;
   //공유데이터인데 마스터가 아니고, $tmp_ta_cm_no == 공유데이터가 아니면..
   if ( isset($data['sc']) && $data['sc']['sc_cm_no'] == NULL && $this->tmp_ta_cm_no != "share" ) {
    //이즈뷰를 투루..
    $data['is_view'] = true;
   }
   
   $returnHtml = $this->load->view('data/stay/ajax/company/stayForm', $data, true);
   
   if( validation_errors() ){
    json_alert( array( 'stat' => 0, 'msg' => strip_tags(validation_errors()) ) );
   } else {
    json_alert( array( 'stat' => 1, 'returnHtml' => $returnHtml ) );
   }
   
  } else {
   
   //등록이면
   if($this->input->post('w') == ''){
    
    $insert_id = $this->stay_model->stayInsert();
    json_alert(array( 'stat' => 2, 'msg'=>'등록되었습니다.','no' => $insert_id));
    
   }else if($this->input->post('w') == 'u'){
    
    $update_id = $this->stay_model->stayUpdate();
    json_alert(array( 'stat' => 2, 'msg'=>'변경되었습니다.','no' => $update_id));
    
   }else{
    
    json_alert(array('stat'=>0,'msg'=>'잘못된 접근입니다.'));
    
   }
   
  }
  
 }else{
  alert('잘못된 접근입니다.');
 }
}

 

 

해행행 / 2016/01/18 13:54:05 / 추천 0

//닉

감사합니다! 이해하는데 더 도움이될것같습니다